UDP協議與UDP通信

1 UDP協議數組

UDP是無鏈接通訊協議,即在數據傳輸時,數據的發送端和接收端不創建邏輯鏈接。簡單來講,當一臺計算機向另一臺計算機發送數據時,發送端不會確認接收端是否存在,就會發出數據,一樣接收端在收到數據時,也不會向發送端反饋是否收到數據。網絡

因爲使用UDP協議消耗資源小,通訊效率高,因此一般都會用於音頻、視頻和普通數據的傳輸例如視頻會議都使用UDP協議,由於這種狀況即便偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。spa

可是在使用UDP協議傳送數據時,因爲UDP的面向無鏈接性,不能保證數據的完整性,所以在傳輸重要數據時不建議使用UDP協議。3d

UDP傳輸數據被限制在64K之內。code

2 UDP通訊視頻

2.1 DatagramPacket對象

JDK中提供了一個DatagramPacket類,該類的實例對象就至關於一個集裝箱,用於封裝UDP通訊中發送或者接收的數據。blog

使用該構造方法在建立DatagramPacket對象時,不只指定了封裝數據的字節數組和數據的大小,還指定了數據包的目標IP地址(addr)和端口號(port)。該對象一般用於發送端,由於在發送數據時必須指定接收端的IP地址和端口號,就好像發送貨物的集裝箱上面必須標明接收人的地址同樣。ip

DatagramPacket類中的經常使用方法ci

2.2 DatagramSocket

在程序中須要實現通訊只有DatagramPacket數據包也一樣不行,爲此JDK中提供的一個DatagramSocket類。DatagramSocket類的做用就相似於碼頭,使用這個類的實例對象就能夠發送和接收DatagramPacket數據包

該構造方法既可用於建立接收端的DatagramSocket對象,又能夠建立發送端的DatagramSocket對象,在建立接收端的DatagramSocket對象時,必需要指定一個端口號,這樣就能夠監聽指定的端口。

DatagramSocket類中的經常使用方法

2.3 UDP網絡程序

要實現UDP通訊須要建立一個發送端程序和一個接收端程序

UDP完成數據的發送:

複製代碼
//發送端 public class UDPSend { public static void main(String[] args) throws IOException { //接收用戶輸入的數據 Scanner sc=new Scanner(System.in); String str=sc.nextLine(); //1.建立數據包對象,封裝要發送的數據,接收端的ip,端口號 byte[] bytes=str.getBytes(); //建立inetAddress對象封裝接收端的地址 InetAddress inet=InetAddress.getByName("192.168.1.174"); DatagramPacket dp=new DatagramPacket(bytes, bytes.length,inet,6000); //2.建立DatagramSocket對象,數據包的發送對象 DatagramSocket ds=new DatagramSocket(); //3.調用ds的send方法,發送數據包  ds.send(dp); //4.釋放資源  ds.close(); } }
複製代碼

UDP完成數據的接收:

複製代碼
//接收端 public class UDPRecieve { public static void main(String[] args) throws IOException { //建立數據包傳輸對象DatagramSocket綁定端口號 DatagramSocket ds=new DatagramSocket(6000); //建立字節數組來接收發過來的數據 byte[] bytes=new byte[1024]; //建立數據包對象DatagramPacket DatagramPacket dp=new DatagramPacket(bytes, bytes.length); //調用數據包傳輸對象的receive方法來接收數據  ds.receive(dp); //拆包 //獲取數據長度 int length=dp.getLength(); //獲取ip地址 String ip=dp.getAddress().getHostAddress(); //獲取端口號 int port=dp.getPort(); System.out.println("ip地址爲:"+ip+",端口號爲:"+port+",發送的內容爲:"+new String(bytes,0,length)); //釋放資源  ds.close(); } }
複製代碼
相關文章
相關標籤/搜索