UDP
发短信:不用连接,需要知道对方的地址
客户端:
//不需要连接服务器 public class UdpClientDemo01 { public static void main(String[] args) throws Exception{ //1.建立一个Socket DatagramSocket socket = new DatagramSocket(); //2.建个包 String msg = "你好啊!"; //发送给谁 InetAddress localhost = InetAddress.getByName("localhost"); int port = 9090; DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port); //3.发送包 socket.send(datagramPacket); //4.关闭流 socket.close(); } }
接收端:
//还要等待客户端的连接 public class UdpServerDemo01 { public static void main(String[] args) throws Exception{ //开放端口 DatagramSocket socket = new DatagramSocket(9090); //接收数据 byte[] buffer = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length); socket.receive(datagramPacket);//阻塞接受 System.out.println(datagramPacket.getAddress().getHostAddress()); //关闭连接 socket.close(); } }
循环接收消息:
发送方:
public class UdpSenderDemo01 { 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[] datas = data.getBytes(); DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 6666)); socket.send(packet); if (data.equals("bye")){ break; } } socket.close(); } }
接收方:
public class UdpReceiveDemo01 { 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); //断开连接 byte[] data = packet.getData(); String receiveData = new String(data,0,data.length); System.out.println(receiveData); if (receiveData.equals("bye")){ break; } } socket.close(); } }
标签:DatagramSocket,UDP,DatagramPacket,Java,socket,编程,new,public,String From: https://www.cnblogs.com/zhulei118/p/16917429.html