import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* UDP协议下的接收端代码编写: 1:建立udp的socket服务. 2:通过receive方法接收数据 3:将收到的数据存储到数据包对象中 4:通过数据包对象的功能来完成对接收到数据进行解析. 5:可以对资源进行关闭 */ public class ReceiverDemo2 { public static void main(String[] args) throws Exception{ //1:建立udp的socket服务. //对于接收端,需要绑定本机的一个端口号 DatagramSocket ds = new DatagramSocket(18888); //创建一个新的数据包,用于接收发送过来的数据 //DatagramPacket(byte[] buf, int length) //构造一个 DatagramPacket用于接收长度的数据包 length 。 byte[] bytes = new byte[1024]; DatagramPacket dp = new DatagramPacket(bytes, bytes.length); while (true){ // 2:通过receive方法接收数据 //public synchronized void receive (DatagramPacket p) //发送阻塞,等待数据 ds.receive(dp); //4:通过数据包对象的功能来完成对接收到数据进行解析. //获取接收到的字节数组的形式 byte[] data = dp.getData(); int length = dp.getLength(); //将接收到的数据封装成字符串 String info = new String(data, 0,length); InetAddress address = dp.getAddress(); //获取发送人的ip地址 String ip = address.getHostAddress(); //获取发送人的主机名 String hostName = address.getHostName(); System.out.println("用户:"+hostName+",ip地址为:"+ip+",发送来的数据是:"+info); } //对资源进行关闭 } }