首頁 >Java >java教程 >詳細介紹java UDP通信

詳細介紹java UDP通信

王林
王林轉載
2019-11-26 14:32:513173瀏覽

詳細介紹java UDP通信

介紹:

UDP為使用者資料報協議,在java中操縱UDP使用JDK中java.net套件下的 DatagramSocketDatagramPacket類,可以方便的控制使用者資料封包。

DatagramPacket類別將資料位元組填入UDP包中,稱為資料報。 

DatagramSocket用來傳送這個套件。如果接受數據,可以從DatagramSocket中接受一個 DatagramPack對象,然後從該套件讀取資料的內容。

UDP是面向無連接的單工通信,它速度快。

線上影片教學推薦:java線上影片

#1、 DatagramSocket類別

建構函數:

DatagramSocket()

建立實例,通常用於客戶端編程,他並沒有特定的監聽端口,僅僅使用一個臨時的。

DatagramSocket(int port)

建立實例,並固定監聽Port埠的封包。

DatagramSocket(int port, InetAddress laddr)

這是一個非常有用的建構器,當一台機器擁有多於一個IP位址的時候,由它所建立的實例只會接收來自LocalAddr的封包。

DatagramSocket(SocketAddress bindaddr)

bindaddr物件中指定了連接埠和位址。

常用函數:

receive(DatagramPacket p)

接收資料封包到p中。 receive方法是阻塞的,如果沒有接收到資料封包的話就會阻塞在哪裡。

send(DatagramPacket p)

發送封包p到目的地。

setSoTimeout(int timeout)

設定超時時間,單位為毫秒。

close()

關閉DatagramSocket。在應用程式退出的時候,通常會主動的釋放資源,關閉Socket,但是由於異常的退出可能造成資源無法回收。所以應該在程式完成的時候,主動使用此方法關閉Socket,或在捕獲到異常後關閉Socket。

2、 DatagramPacket類別

#DatagramPacket類別用於處理封包,將位元組陣列、目標位址、目標連接埠等資料包裝成報文或將報文拆成位元組數組。
建構子:

DatagramPacket(byte[] buf, int length, InetAddress addr, int port)

從buf位元組數組中取出offset開始的、length長的資料建立資料對象,目標位址是addr,目標埠是port。

DatagramPacket(byte buf[], int offset, int length, SocketAddress address)

從buf位元組數組中取出offset開始的、length長的資料建立資料對象,目標位址是address

常用函數:

getData() byte[]

從實例中取得報文中的位元組數組編碼。

setData(byte[] buf, int offset, int length)

設定資料封包中的資料內容

3、UDP通訊的通訊流程

UDP傳送端:

1、建立updsocket服務。

2、提供數據,並將資料封裝到資料包中。

3、透過socket服務的發送功能,將封包發出去。

4、關閉資源。

UDP接收端:

1、定義udpsocket服務,通常會監聽一個連接埠。

2、定義一個資料包,儲存接收到的位元組資料。

3、透過socket服務的receive方法將收到的資料存入已定義好的資料包中。

4、透過資料包物件的獨特功能,將這些不同的資料取出,列印在控制台上。

5、關閉資源。

更多相關問題請造訪java文章教學:java入門

以上是詳細介紹java UDP通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除