UDP多发多收
UDP多发多收
客户端代码
public class Client{
public static void main(String[] args) throws Exception {
// 1. 创建客户端对象
DatagramSocket socket = new DatagramSocket();
while(true) {
System.out.println("请说:");
String msg = sc.nextLine();
// exit退出循环
if("exit".equals(msg)) {
System.out.println("退出成功!")
socket.close();
break;
}
// 2. 创建数据包对象封装要发出去的数据
byte[] bytes = "Hello server".getBytes();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getLocalHost(), 6666);
// 参数1: 封装要发出去的数据
// 参数2:发送数据的大小
// 参数3:服务端的IP地址
// 参数4: 服务端程序的端口
// 3. 发送数据
socket.send(packet);
System.out.println("客户端数据发送完毕")
}
}
}
服务端代码
public class Server {
public static void main(String[] args) {
// 1. 创建一个服务端对象注册端口
DatagramSocket socket = new DatagramSocket(6666);
// 2. 创建一个数据包对象,用于接收数据
byte[] buffer = new byte[1024 * 64]; // 一个数据包不超过64kb
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while(true) {
// 3. 开始正式使用数据包来接收客户端发来的数据
socket.reveive(packet)
// 4. 从字节数组中,把接收的数据直接打印出来
// 读取多少打印多少
int len = packet.getLength();
String rs = new String(buffer, 0, len);
System.out.println(rs);
// 发送端的信息
System.out.println(packet.getAddress().getHostAddress());
System.out.println(packet.getAddress().getPort());
System.out.println("----------------");
}
}
}