UDP通信小练习
话说没有传输的对象,自己传给自己玩= =
实现UDP协议的发送端
实现封装数据的类:java.net.DatagramPacket 将数据包装
数据传输的类: java.net.DatagramSocket 将数据包发出去
实现步骤
1 创建DatagramPacket对象,封装数据,接受的地址和端口
2 创建DatagramSocket
3 调用DatagramSocket方法send,发送数据包
4 关闭资源
public class UDPSend {
public static void main(String[] args) throws IOException{
//创建出数据包对象,封装要发送的数据,接收端IP,端口
byte[] date = “你好UPD”.getBytes();
//创建InetAddress对象,封装自己的IP
InetAddress inet = InetAddress.getByName(“127.0.0.1”);
//意思是 把date数组,全部长度,发给inet所代表的地址,的6000端口
DatagramPacket dp = new DatagramPacket(date, date.length,inet,6000);
//创建DategramSocket对象,数据包的发送和接收对象
DatagramSocket ds = new DatagramSocket();
ds.send(dp);
ds.close();
}
/*(注释的小星星懒得删了,就这样吧)
* 实现UDP接收端
* 实现封装数据包 java.net.DatagramPacket 将数据接收
* 实现输出传输 java.net.DatagramSocket
* 实现步骤:
* 1 创建DatagramSocket对象 绑定端口号
* 要和发送端的一致
* 2 创建一个字节数组 准备接收发来的数据
* 3 创建数据包对象DatagarmPacket
* 4 调用DatagramSocket对象方法 receive(DatagarmPacket dp) 接收数据,数据放在数据包中
* 5 拆包
* 发送的IP地址
* 数据包对象DatagarmPacket方法 getAddress()获取的是发送端的IP地址对象 返回值是InetAddress对象
* 接收到的字节个数
* 数据包对象DatagarmPacket方法 getLength()
* 发送方的端口号
* 数据包对象DatagarmPacket方法 getPort()
* 6 关闭资源
*/
public class UDPReceive {
public static void main(String[] args) throws IOException{
//创建数据包传输对象DatagramSocket 绑定端口号
DatagramSocket ds = new DatagramSocket(6000);
//创建字节数组 等着装数据
byte[] data = new byte[1024];
//创建数据包对象,传递字节数组
DatagramPacket dp = new DatagramPacket(data,data.length);
//调用ds对象的方法receive传递数据包
ds.receive(dp);
//获取发送端的IP地址对象
String ip = dp.getAddress().getHostAddress();
//获取发送的端口号
int port = dp.getPort();
//获取接收到的字节个数
int length = dp.getLength();
System.out.println(new String(data,0,length)+”…来自于”+ip+”…端口号是”+port);
ds.close();
}
}