客户端: import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; //UDP客户端,发送数据,必须先运行服务器才能发送,不然出错 public class SendClient { public static void main(String[] args) throws Exception { //1.建立DatagramSocket 给一个端口8888,不然发送端会随机分配 DatagramSocket socket=new DatagramSocket(8888); //2.准备数据:键盘输入 Scanner input = new Scanner(System.in); //要发送给的服务器ip:InetAddress ia=InetAddress.getByName("192.168.10.62"); //本次是发给本身因此用下面的这个 InetAddress ip=InetAddress.getLocalHost(); //服务端的端口 int port=8889; //3.建立套接字:数据包 DatagramPacket dp=null; byte[]a; String str=null; while(true){ str=input.nextLine();//接收一条数据。 if("000".equals(str.trim())){//输入一000结束 break; } //将数据打包成数据包发送 a=str.getBytes(); dp=new DatagramPacket(a, 0,a.length,ip,port); //发送数据报包 socket.send(dp); } socket.close(); } } 服务端: import java.net.DatagramPacket; import java.net.DatagramSocket; //UDP服务端,接收数据 public class ReceivceClient { public static void main(String[] args) throws Exception { //1.建立接收套接,注意端口号必须一致,不然接收不到 DatagramSocket socketreceivce=new DatagramSocket(8889); //2.准备缓冲区接收数据 byte[] b=new byte[1024]; //3.准备数据报包,将数据传到数组中 DatagramPacket dp=new DatagramPacket(b, b.length); int len=-1; while(true){ socketreceivce.receive(dp); //得到对方的ip地址,端口,数据。 len=dp.getLength();//本次得到的字节数量 String str=new String(b, 0, len); System.out.println("ip:"+dp.getAddress().getHostAddress()+"端口:"+dp.getPort()+"内容: "+str); } } }