初学者之关于UDP接受数据不到的问题

it2022-05-05  278

问题:一般来说,应该是发送方先发送,然后接收方接收,但是由于发送的速度很快,在发送方关闭之前根本接受不到数据。 解决:先运行接收方,再运行发送方时,就可以快速接收到消息。 public class UDP_service { public static void main(String[] args) throws Exception { System.out.println("发动方启动中!"); // 1.使用DatagramSocket 指定端口,创建发送端 DatagramSocket data = new DatagramSocket(8888); // 2.准备数据并要转成字节数组 String message = "哈哈哈,这是我的数据!"; byte[] b = message.getBytes(); // 3.封装成DatagramPacket包裹,需要指定目的地 DatagramPacket packet = new DatagramPacket(b, 0, b.length, new InetSocketAddress("localhost",6666)); // 4.发送包裹send data.send(packet); // 5.释放资源 data.close(); System.out.println("发送数据完成!!"); } }

 

 

public class UDP_client { public static void main(String[] args) throws Exception { System.out.println("接收方启动中!"); //1.使用DatagramSocket 指定端口,创建接收端 DatagramSocket data = new DatagramSocket(6666); // 2.准备容器,封装成DatagramPacket byte[] b = new byte[1024*60]; DatagramPacket d = new DatagramPacket(b, 0, b.length); // 3.阻塞式接受包裹receive,将其存在准备的容器中 data.receive(d); // 4.分析数据 byte[] getDate() getLength() byte[] bb = d.getData(); int len = d.getLength(); System.out.println(len); System.out.println(new String(bb,0,bb.length) ); // 5.释放资源 data.close(); System.out.println("接受收数据完成!!"); } }

最新回复(0)