循环发送
package chat; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; /** * 发送方 */ public class UdpSenderDemo1 { public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(8888); //准备数据:控制台读取:System.in BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); while (true){ String data = reader.readLine(); byte[] dataBytes = data.getBytes(); DatagramPacket packet = new DatagramPacket(dataBytes, 0 , dataBytes.length, new InetSocketAddress("localhost", 6666)); //发送数据包 socket.send(packet); //当发送一句 bye 的时候表示结束发送 if (data.equals("bye")){ break; } } //关闭 socket.close(); } }
接收消息
package chat; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 接收方 */ public class UdpReceiveDemo1 { public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(6666); while (true){ //准备接收数据包 byte[] container = new byte[1024]; DatagramPacket packet = new DatagramPacket(container, 0, container.length); //接收数据包 socket.receive(packet); //阻塞式接收包裹 //读取数据 byte[] data = packet.getData(); String receiveData = new String(data, 0, data.length); //接收到的数据 System.out.println(receiveData); //当我们说一声 bye 的时候就表示断开连接 if (receiveData.equals("bye")){ break; } } //关闭 socket.close(); } }