我們都知道,udp是無連線的,但是為什麼協議讓udp也可以呼叫connect()?
1.因為udp可以是一對一,多對一,一對多,或者多對多的通訊,所以每次呼叫sendto()/recvfrom()時都必須指定目標ip和埠號。通過呼叫connect()建立乙個端到端的連線,就可以和tcp一樣使用send()/recv()傳遞資料,而不需要每次都指定目標ip和埠號。但是它和tcp不同的是它沒有三次握手的過程。
2.還可以通過在已建立連線的udp套接字上,再次呼叫connect()實現以下功能:
a.指定新的ip位址和埠號。
b.斷開連線。
這也與tcp有所不同,tcp套接字只能呼叫一次connect()函式。
在udp中使用connect
近日一直在學習 unix網路程式設計 第1卷 套介面api 再次重新認識了udp,糾正了不少以前錯誤的認識和觀念。在udp中使用connect 1.不能給輸出操作指定伺服器ip位址埠號,也就是說不能使用sendto而改用write或send。伺服器ip由connect指定。2.接收操作不必使用rec...
TCP UDP與connect系統呼叫
一 tcp與udp區別 tcp保證資料正確性,udp可能丟包 tcp保證資料順序,udp不保證。tcp 傳輸控制協議,提供的是面向連線 可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,...
9 呼叫connect連線超時
簡單來說,連線超時就是當客戶端呼叫connect函式跟服務端建立連線,等待一段時間後,最後connect函式返回etimedout錯誤,建立連線失敗。那麼連線超時具體是怎麼出現的呢?一般是客戶端呼叫connect傳送的syn報文在網路傳輸過程中發生網路擁塞,導致報文丟失或服務端收到syn,但未及時響...