發送UDP消息時不需要綁定()。 原因:我們不需要顯式綁定(),因爲操作系統會自動將發件人與IP地址和端口號綁定。爲什麼在接收UDP消息時需要綁定?
爲什麼需要bind()來接收UDP消息? 發件人可以從接收到的上一條消息中獲取IP地址&接收方的端口號,並使用該權限發送UDP消息?
發送UDP消息時不需要綁定()。 原因:我們不需要顯式綁定(),因爲操作系統會自動將發件人與IP地址和端口號綁定。爲什麼在接收UDP消息時需要綁定?
爲什麼需要bind()來接收UDP消息? 發件人可以從接收到的上一條消息中獲取IP地址&接收方的端口號,並使用該權限發送UDP消息?
你的問題沒有意義。如果您已經發送了消息,則不需要,因爲您已經綁定了。如果您尚未發送消息,則需要使用該消息,在這種情況下,您描述的技術不可能適用。
UDP是無連接的,但它仍然基於綁定端口。接收者必須調用sendto()
,connect()
或bind()
建立本地綁定端口,以便操作系統知道哪個端口允許入站數據,並建立發送者需要發送數據的端口。如果接收方是發送數據包的第一方,那麼綁定可以是隱含的,但如果接收方不是第一方,那麼綁定必須明確完成。
如果接收方沒有綁定本地端口,端口不會打開得更糟,或者最好由操作系統隨機選擇。無論如何,除非接收方通過外部方式告訴發送方,否則發送方無法知道將數據發送到哪個端口。即使這樣,爲了讓接收者發現一個隨機分配的端口,它將不得不查詢套接字,但是無法查詢未綁定的套接字。所以接收器必須以某種方式執行本地綁定。
在「上一個」消息之前交換會發生什麼?在此之前?在此之前? ....你必須從某個地方開始,並且某人必須有一個明確的地址供另一方連接。 –