TCP是一种面向连接的传输层协议,而UDP是传输层中面向无连接的协议,故传送的数据包不能保证有序和不丢失,实现UDP通信主要用到了两个类:DatagramPacket和DatagramSocket
DatagramSocket
此类表示用于发送和接收数据报包的套接字
DatagramSocket socket = new DatagramSocket(6565);
DatagramPacket
此类表示数据报包
DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, InetAddress.getByName("127.0.0.1"), 6565);
发送端代码
try {
// 1.建立一个socket
DatagramSocket socket = new DatagramSocket();
// 2.建个包
String msg = "这里是发送方";
DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, InetAddress.getByName("127.0.0.1"), 6565);
// 3.发送包
socket.send(packet);
// 4.关闭流
} catch (SocketException | UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
接收端代码
try {
// 1.开放端口
DatagramSocket socket = new DatagramSocket(6565);
// 2.接收数据包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
//阻塞式接收
socket.receive(packet);
System.out.println(new String(packet.getData(), 0, packet.getLength()));
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}