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("----------------");
		}
	}
}