天天看點

UDP協定入門

udp協定是一種不可靠的網絡協定,他在通信執行個體的兩端各建一個socket,但這兩個socket之間并沒有虛拟鍊路,這兩個socket隻是發送、接收資料報對象,java提供datagramsocket對象作為基于UDP協定的socket,使用datagramPAcket代表datagramsocket發送、接收的資料報。

udp協定是英文[color=red]User Datagram Protocol[/color]的縮寫,即使用者資料報協定,主要用來支援那些需要在計算機之間傳輸資料的網絡連接配接。UDP協定從問世到至今已經使用了很多年,雖然UDP協定目前應用不如TCP協定廣泛,但UDP協定依然是一個非常實用和可行的網絡傳輸協定。尤其在一些實時性很強的應用場景,比如網絡遊戲、視訊會議等、UDP協定的快速更具有獨特的魅力。

udp學醫是一種面向非連接配接 的協定,面向非連接配接指的是在正式通信前不必與對方先建立連接配接,不管對方的狀态就直接發送,至于對方是否可以接受到這些資料,udp協定無法控制,是以說UDP協定是不可靠協定,UDP協定适用一次隻傳送少量的資料、對可靠性要求不高的應用環境。

因為UDP協定是面向非連接配接的協定,沒有建立連接配接的過程,是以它的通信效率很高;但正因為如此,它的可靠性不如TCP協定。

[color=red]UDP協定和TCP協定對比如下[/color]

1.TCP協定:可靠,傳輸大小無限制,但是需要連接配接建立時間,差錯控制開銷大。

2.UDP協定:不可靠,差錯控制開銷小,傳輸大小限制在64KN以下,不需要建立連接配接。

udp程式設計例子:

下面程式使用datagramsocket實作server/client結構的網絡通信。本程式的伺服器端使用循環1000次 來讀取datagramsocket中的資料報,每次讀取到内容之後便向該資料報的發送者送回一條資訊,伺服器代碼如下:

Server代碼

上面程式中使用datagramsocket發送、接收datagramPD的代碼,該程式接收1000個用戶端發送過來的資料

用戶端程式代碼也與此類似,用戶端采用循環不斷的讀取鍵盤輸入,每當讀取到使用者輸入的内容就把内容封裝成datagrampacket資料報,再将該資料報發送出去;接着把datagrampacket中的資料讀入接收到的datagrampacket中。

用戶端的代碼如下

client代碼

用戶端的代碼與伺服器相似,而用戶端與伺服器端的唯一差別在于:伺服器端的IP位址、端口是固定的,是以用戶端可以直接将該資料報發送給伺服器端,而伺服器端則需要根據收到的資料報來決定“回報”資料報的目的地。

聲明:文章内容摘自李剛《瘋狂java講義》,歡迎轉載學習并注明次原文位址

[color=blue][url]http://fuchangle.iteye.com/admin/blogs/1752117[/url][/color]

繼續閱讀