0
我使用pidgin,A,B和C運行多個bonjour客戶端。
當B和C對話時,我發現A使用相同的端口(使用wireshark我可以看到數據包) MDNS和通信,
但B和C,每一個具有兩個不同的端口一個用於MDNS,一個用於套接字連接。
A如何工作,爲什麼它只能用一個端口工作?一個端口如何提供多個連接?
注意:如果是多線程,那麼當它接受它會創建另一個自由港新的套接字連接,但我看到Wireshark的數據包,客戶端A所做的僅僅是使用相同的端口進行通信和MDNS。 (source_address,source_port,的destination_address,destination_port):
一個端口上的多個連接
感謝,但是當我嘗試使用端口5298連接到在同一臺機器上其他幾個端口, java套接字,有「地址已被使用」的異常?你說如果元組中的任何元素髮生變化,它應該沒問題,這怎麼會發生?那麼我嘗試了另一個指定的本地端口5555,我有「連接被拒絕」?我們不能指定本地端口嗎?還是應該在創建套接字之前對本地指定的端口執行一些操作?我嘗試在IPTABLE中禁用此端口,但它不起作用! – seaguest
好吧,我說如果元組中有元素髮生變化,那麼TCP協議就沒關係了。但套接字API有其他的限制:你不能綁定到同一個本地地址/端口不止一次(除非你設置SO_REUSEADDR選項,但這有其他更微妙的影響)。因此「地址已被使用」錯誤。當您嘗試連接到目標地址/端口並且該端口中沒有監聽時,會發生「連接被拒絕」錯誤。 – rodrigo
非常感謝您的回答!事實上我解決了這個問題,因爲我不知道MDNS使用默認端口5353,並且我配置了一個用於socket的錯誤端口。所以現在它工作得很好!再次感謝您的熱烈回答! – seaguest