1

我有相當的困境 有每臺機器上的IP地址,0.0.0.0:0也被稱爲「所有可用的接口」 IP0.0.0.0:PORT如何以及從哪裏?

所以我的問題是這樣的 - 我需要使用映射本地主機上連接格式化輸出從netstat,我應該如何考慮列表0 *:0或0 *:端口?我的意思是:

如果S1正在監聽0.0.0.0:1000,並且S2正在偵聽192.168.0.1:1000,會發生什麼? 將連接S1 S2所(或者相反,通過S1 S1攔截) 攔截我知道0.0.0.0未終結點的任何連接,但認爲:

如果S2獲取連接,做導演S1聽到包在這個地址?

如果sl被偵聽所有接口:1000,包括192.168.1.0:1000那麼,連接192.168.0.1:1000會導致

感謝所有的答案!

+1

「0.0.0.0」地址只能用於被動偵聽端口。一旦建立連接,該連接從連接到達的接口獲取本地IP地址。 –

+0

因此,如果我對此正確,我無法物理地建立連接來解決在0 *:*上偵聽的問題,並且通過該地址:端口我只能宣佈我想要在物理上存在的某個接口上進行連接? – Esavier

+0

是的,這是正確的。 –

回答

0

如果S1正在監聽0.0.0.0:1000,並且S2正在偵聽192.168.0.1:1000,會發生什麼情況?

你描述的情況是不可能的。無論哪個人先來都會阻止第二個人的約束。您可以在TCP中重複使用端口的唯一方法是,如果兩個地址都不相同都不是0.0.0.0。

[Windows不包括在內。 Windows允許它,如果你能弄清楚MSDN中的描述會發生什麼,那麼你的表現會比我更好。]

+1

這就是問題所在,我不得不在win和linux下編寫應用程序,所以我需要考慮這兩種情況。在MSDN上沒有很好的文檔,並且Windows真的允許綁定端口,如上面的情況所示。 – Esavier

+1

看起來像使用[SO_EXCLUSIVEADDRUSE](http://msdn.microsoft.com/en-us/library/windows/desktop/ms740621(v = vs.85).aspx)是Windows上的答案。很難看到MS如何進入這個泡菜。 – EJP

相關問題