JAVA 实现UDP协议 数据包接收和发送
发布时间
阅读量:
阅读量
1. 实现UDP协议的发送端
- 实现封装数据的类 java.net.DatagramPacket 将你的数据包装
- 实现数据传输类 java.net.DatagramSocket 将数据包发出去
- 实现步骤:
- 1.创建DatagramPacket对象,封装数据,接收的地址和端口
- 2.创建DatagramSocket对象,
- 3.调用DatagramSocket类的方法send,发送数据包
- 4.关闭资源
- DatagramPacket构造方法:
- DatagramPacket(byte[ ] buf,int length,InetAddress address,int port)
- DatagramSocket构造方法:
- DatagramSocket()空参数
- 方法:send(DatagramPacket d)
代码示例如下:
public class SendMan {
public static void main(String[] args)throws IOException{
//创建数据包对象,封装要发送的数据,接收端IP,端口
byte[] data = "hello".getBytes();
//创建InetAddress对象,封装自己的IP地址
InetAddress inet = InetAddress.getByName("192.168.2.170");
DatagramPacket dp = new DatagramPacket(data,data.length,inet,6000);
//创建DatagramSocket对象,数据包的发送和接收对象
DatagramSocket ds = new DatagramSocket();
//调用ds对象的方法send,发送数据包
ds.send(dp);
ds.close();
}
}
2.实现UDP接收端
* 实现封装数据包java.net.DatagramPacket 将数据接收
- 实现输出传输 java.net.DatagramSocket 接受数据包
- 实现步骤:
- 1.创建DatagramSocket对象,绑定端口号 要和发送数据端口号一致
- 2.创建字节数组,接受发来的数组
- 3.创建数据包对象DatagramPacket
- 4.调用DatagramSocket对象方法
receive(DatagramPacket dp)接受数据,数据放在数据包中
- 5.拆包
- 发求送的IP地址
- 数据包对象DatagramPacket.getAddress()
- 求接受到的字节个数
- 数据包对象DatagramPacket.getLength()
- 求发送方的端口号
- 数据包对象DatagramPacket.getPort()
- 6.关闭资源
代码示例如下:
public class ReceiverMan {
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();
}
}
全部评论 (0)
还没有任何评论哟~
