UDP是面向无连接的,要想验证是否发送成功,先要开启接收端,才能观察到效果。如果接收端没有开启,无法得知接收端是否收到数据。
发送端代码:
try { DatagramSocket datagramSocket=new DatagramSocket(); byte[] bytes="UDP编程".getBytes(); DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length,InetAddress.getByName("127.0.0.1"),10000); datagramSocket.send(datagramPacket); datagramSocket.close(); System.out.println("发送成功"); } catch (Exception e) { e.printStackTrace(); }发送端运行结果:
接收端代码:
public static void main(String[] args) { try { DatagramSocket datagramSocket=new DatagramSocket(10000); byte[] bytes=new byte[1024]; DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length); datagramSocket.receive(datagramPacket); String ip=datagramPacket.getAddress().getHostAddress(); String data=new String(datagramPacket.getData(),0,datagramPacket.getLength()); int port=datagramPacket.getPort(); System.out.println(ip+"::"+data+"::"+port); } catch (Exception e) { e.printStackTrace(); } }接收端运行结果:
指定了发送端的端口号为8888,则运行结果的端口号即为所指定的。
在发送端的代码做如下修改:
DatagramSocket datagramSocket=new DatagramSocket(8888);