UDP调用connect
? ? ? ? ? ?UDP調用connect函數之前寫過了,用的一個編程實例簡單說明了一下,今天再更深入的學習一下。
之前博文地址:https://blog.csdn.net/ma2595162349/article/details/78785885
? ? ? ? ? UDP調用connect函數主要有一下幾個作用:
1.異步錯誤會返回到UDP套接字
2.每次調用sendto時,內核短暫連接套接字,發送數據包,然后斷開套接字字,效率低
2.除了connect連接的該套接字外,服務端不會收到其它套接字的數據包
? ? ? ?為啥UDP調用connect后會產生這樣的效果呢?下面需要深入學習一下,UDP調用connect之后,客戶端就去連接服務端,然后服務端的信息就會記錄到與客戶端套接字相關的PCB中,還有當前套接字發送了啥數據也會保存在PCB中。如果沒有調用connect時不會保存連接信息的,而且數據在被發送之后就會丟棄記錄也將消失。
connect成功之后,每當客戶端發送數據到服務端時,這些記錄就會被保存套接字相關的PCB中,如果發送時產生ICMP消息,則ICMP會根據UDP包頭和套接字PCB的記錄信息找到對應的套接字,并把錯誤返給它。
connect成功之后,連接已經建立,所以下次發送數據就不需要再次建立連接了。服務端套接字的PCB也保存了本客戶端相關信息,所以其他客戶端在發送數據給該服務端的時候,該服務端將不予接收。
總結
以上是生活随笔為你收集整理的UDP调用connect的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nagle算法和延迟ACK
- 下一篇: lsof根据端口查进程