按照下面的要求实现程序
UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
java
DatagramSocket ds = new DatagramSocket(); //2.打包数据 Scanner s = new Scanner(System.in); while (true) { System.out.println("请输入"); String str = s.nextLine(); if("886".equals(str)) { break; } byte[] bytes = str.getBytes(); InetAddress byName = InetAddress.getByName("127.0.0.1"); //端口 int port = 10086; //打包数据 DatagramPacket dp = new DatagramPacket(bytes, bytes.length, byName, port); //3.发送数据 ds.send(dp); } //4.释放资源 ds.close();
JavaBean
//1.创建DatagramSocket对象(快递公司) //细节: //在接收的时候,一定要绑定端口 //而且绑定的端口一定要跟发送的端口保持一致 DatagramSocket ds = new DatagramSocket(10086); //2.接受数据包 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); //该方法是阻塞的 //程序执行到这一步的时候,会在这里死等 //等发送端发送消息 //接受数据 while (true) { ds.receive(dp); //3.解析数据包 byte[] data = dp.getData(); int len = dp.getLength(); String ip = dp.getAddress().getHostAddress(); String name = dp.getAddress().getHostName(); System.out.println("ip为:" + ip + ",主机名为:" + name + "的人,发送了数据:" + new String(data, 0, len)); }