在進行udp傳輸時,須要明確一個是發送端,一個是接收端。數組
udp的發送端:socket
1,創建udp的socket服務,建立對象時若是沒有明確端口,系統會自動分配一個未被使用的端口。spa
2,明確要發送的具體數據。code
3,將數據封裝成了數據包。對象
4,用socket服務的send方法將數據包發送出去。blog
5,關閉資源。ip
// 1,創建udp的socket服務。 DatagramSocket ds = new DatagramSocket(8888);//指定發送端口,不指定系統會隨機分配。 // 2,明確要發送的具體數據。 String text = "udp傳輸演示 哥們來了"; byte[] buf = text.getBytes(); // 3,將數據封裝成了數據包。 DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.20.108"),10000); // 4,用socket服務的send方法將數據包發送出去。 ds.send(dp); // 5,關閉資源。 ds.close();
udp的接收端:資源
1,建立udp的socket服務,必需要明確一個端口,做用在於,只有發送到這個端口的數據纔是這個接收端能夠處理的數據。字符串
2,定義數據包,用於存儲接收到數據。get
3,經過socket服務的接收方法將收到的數據存儲到數據包中。
4,經過數據包的方法獲取數據包中的具體數據內容,好比ip、端口、數據等等。
5,關閉資源。
// 1,建立udp的socket服務。 DatagramSocket ds = new DatagramSocket(10000); // 2,定義數據包,用於存儲接收到數據。先定義字節數組,數據包會把數據存儲到字節數組中。 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); // 3,經過socket服務的接收方法將收到的數據存儲到數據包中。 ds.receive(dp);//該方法是阻塞式方法。 // 4,經過數據包的方法獲取數據包中的具體數據內容,好比ip,端口,數據等等。 String ip = dp.getAddress().getHostAddress(); int port = dp.getPort(); String text = new String(dp.getData(),0,dp.getLength());//將字節數組中的有效部分轉成字符串。 System.out.println(ip+":"+port+"--"+text); // 5,關閉資源。 ds.close();
親測好使。