UDP网络通信的发包过程
1、使用DatagramSocket()创建一个数据包套接字。
2、使用DatagramPacket(byte[]buf, int offset, int length, InetAddress address, int port)创建要发送的数据包。
3、使用DatagramSocket类的send()方法数据包
UDP网络通信的收包过程
1、使用DatagramSocket(int)创建一个数据包套接字,绑定到指定的端口。
2、使用DatagramPacket(byte[]buf,int length)创建字节数组来接收数据包.
3、使用DatagramSocket类的receive()方法接收UDP
获取的数据实际上就存储在创建空包的数组种,转换显示时建议设置长度
System.out.println(dp.getLength()); //数据的具体长度
String str=new String(buffer,0,dp.getLength());
一般来说UDP协议的最大数据包的长度64k
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(9999);
byte[] buffer = new byte[8192];
DatagramPacket dp=new DatagramPacket(buffer, buffer.length);
ds.receive(dp);
// byte[] data=dp.getData();
// System.out.println(data.length);
System.out.println(dp.getLength()); //数据的具体长度
String str=new String(buffer,0,dp.getLength());
System.out.println(str);
ds.close();
PrintWriter pw=new PrintWriter(new FileWriter("d:/bbb.txt"));
pw.println(str);
pw.close();
}
}
public class Send {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket();
String msg = "现在几点了?";
byte[] data = msg.getBytes();
DatagramPacket dp = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 9999);
ds.send(dp);
ds.close();
}
}