客戶端: 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); } } }