结果
//UDP发送端
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.io.*; import java.util.Scanner; public class UDPSend { public static void main(String[] args) throws Exception { //启用 UDP 广播发送和接收数据报包的套接字 DatagramSocket ds=new DatagramSocket(); //重键盘获取数据(1) BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str=null; while((str=br.readLine())!=null) { byte buf[]=str.getBytes(); //数据报包用来实现无连接包投递服务 //如果改成192.168.0.255的话,则是给一个网段发送数据 DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.255"),1313); ds.send(dp); if("886".equals(str)) { ds.close(); break; } } } //Scanner scan=new Scanner(System.in); //str=scan.nextLine(); //这样也可以重键盘获取数据,不过建议上面那种 }
//UDP接收端
import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPRec { public static void main(String[] args) throws Exception { //启用 UDP 广播发送和接收数据报包的套接字 DatagramSocket ds=new DatagramSocket(1313); while(true) { byte buf[]=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf,0,buf.length); ds.receive(dp); String adddress=dp.getAddress().getHostAddress(); int port=dp.getPort(); String content=new String(dp.getData(),0,dp.getLength()); System.out.println(adddress+"-->"+content+"-->"+port); } } }