import java.net.*; //发送数据 class UdpSend { public static void main(String[] args)throws Exception { //1,建立udp服务,通过DatagramScoket,建立端点 DatagramSocket ds = new DatagramSocket(10000);//可以指定发送端口,例如10000,也可以不用指定,让系统随机默认分配 //2,确定数据,并封装成数据包.DatagramPacket(byte[] buf, int length, InetAddress address, int port) byte[] buf = "udp is coming".getBytes();//直接指定信息数据 DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.105"),8888); //3,通过scoket服务的send方法发送数据, ds.send(dp); //4,关闭资源 ds.close(); } }
//接收数据 class UdpReceive { public static void main(String[] args)throws Exception { //1,建立udp服务,通过DatagramScoket,建立端点 DatagramSocket ds = new DatagramSocket(8888);//必须指定接收端应用程序的端口,用来匹配发送端数据包来的端口号 while(true) { //2,创建一个字节数据包用于存储接收过来的字节数据 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); //3,通过scoket服务的receive方法接收数据, ds.receive(dp);//阻塞式方法 //4,将字节数据转换为字符串并输出 String message = new String(dp.getData(),0,dp.getLength()); String IP = dp.getAddress().getHostAddress(); int port = dp.getPort(); System.out.println("IP:"+IP+"::"+"port:"+port); System.out.println("message:"+message); } //5,关闭资源 //ds.close(); } }
原文:http://www.cnblogs.com/XYQ-208910/p/4918884.html