上一章講述了TCP通訊方式,它是基於流的面向鏈接的網絡通訊。UDP是IP協議上的另外一種傳輸協議。網絡
TCP和UDP都是端到端的通訊協議,都處於TCP/IP網絡模型的第三層(傳輸層)。socket
它和TCP的區別是:函數
TCP | UDP | 解釋 |
---|---|---|
基於流 | 基於報文 | |
有鏈接 | 無鏈接 | |
有保障 | 無保障 | |
效率低 | 效率高 | |
適用穩定傳輸場合 | 適合容許報文丟失的場合 |
綁定地址和TCP同樣spa
調用的接口和TCP不同,行爲不一樣。TCP的發送會發生粘包狀況,而UDP不會。TCP發送認爲是可靠的,而UDP的發送可能會發生丟失和亂序。接口
UDP的發送大部分時候使用sendto,由於send函數沒有提供目標地址。若是UDP socket調用了connect函數,也可使用send函數。table
因爲UDP沒有鏈接,因此能夠支持廣播和多播。class
使用close效率
UDP也能夠調用connect函數,可是connect函數只是讓udp socket保存默認的發送地址,以即可以簡單的調用send函數來發送數據。udp
UDP的數據是基於報文的,客戶端調用一次send,產生一個UDP報文,接收一次只能接收一個報文。程序
若是recv時,程序提供的緩衝區小於UDP報文長度,那麼會致使數據丟失。如何獲得數據報文的長度???UDP報文不要超過MTU(1400)
廣播時,發送端作額外設置,容許發送廣播,接收端仍是默認處理接口。容許發送廣播socket,也能夠接收數據。
組播,發送端不須要額外設置,只須要發送地址改爲組播地址便可。接收端加入組。