UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無鏈接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規範。 java
UDP的特徵: 數組
Socket 網絡
Java中使用UDP的步驟 socket
發送端 spa
接收端 .net
代碼案例以下 code
發送端 事務
package cc.enfp.socket.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /* * UDP 發送端程序 */ public class SendTest { public static void main(String[] args) throws IOException { /* * 一、建立socket服務 */ DatagramSocket socket = new DatagramSocket(); /* * 二、提供相應的發送=信息 */ byte[] data = "開啓udp之旅".getBytes(); //指明接收端的IP地址,和接收端的端口號 DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getLocalHost(), 10000); /* * 三、使用socket的發送方法,進行數據的發送 */ socket.send(packet); /* * 四、關閉鏈接,釋放資源 */ socket.close(); } }
接收端 ip
package cc.enfp.socket.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /* * UDP 接收端 */ public class ReceiveTest { public static void main(String[] args) throws Exception { /* * 一、建立socket服務 * 須要指明監視的端口號,而且要和發送端指定的接受端口的端口號一致 */ DatagramSocket socket = new DatagramSocket(10000); /* * 二、構建DatagramPacket packet用於接收數據 * packet只是爲了接受數據,因此只須要指明字節數組和長度就能夠 */ byte[] data = new byte[1024]; DatagramPacket packet = new DatagramPacket(data, data.length); /* * 三、經過socket的receive方法將數據封裝到packet中 */ socket.receive(packet);//該方法是阻塞 /* * 四、經過packet提供的相應方法獲取發送端發送的信息 */ InetAddress ip = packet.getAddress(); System.out.println("發送端的IP: "+ip.getHostAddress()); //使用String的重載將返回的byte[]類型的內容轉換成字符串 String content = new String(packet.getData(), 0, packet.getLength()); System.out.println("發送端發送的內容爲: "+content); /* * 5.關閉鏈接,釋放資源 */ socket.close(); } }