2014-03-02 139 views
1

在單個端口上可以運行多個程序嗎?換句話說,同一臺服務器上的兩個應用程序可以具有相同的端口號嗎?在一個端口上可以運行多個程序嗎?

+0

嘗試運行'新的ServerSocket(10000);新的ServerSocket(10000);' –

+0

可能重複的[套接字選項SO \ _REUSEADDR和SO \ _REUSEPORT,它們有什麼不同?它們在所有主要操作系統中的含義是否相同?](http://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they -mean -t) –

回答

2

對於TCP:是的,只要它們綁定到不同的接口(例如eth0loopback)。在相同的界面上,不。

對於UDP:是的。

+0

如果我沒有記錯,對於TCP而言,這是正確的,但對於UDP來說卻是對的,但我的回憶可能是錯誤的。 – jpw

+0

@jpw:沒錯,好點。謝謝你提醒我! – NPE

3

如果他們綁定到不同的IP,是的。綁定到端口綁定到IP地址端口號。因此,如果應用程序A綁定到192.168.0.56:25565,並且應用程序B綁定到127.0.0.1:25565,它們將不成問題。但是,如果應用程序C想要綁定到其中任何一個,或者綁定到0.0.0.0:25565,則會給出錯誤。

+0

如何讓同一臺服務器上的應用程序綁定到不同的IP? –

+0

取決於語言。 –

+1

@SotiriosDelimanolis在Java中,您可以爲各種套接字構造函數指定一個'InetSocketAddress';接口地址可以在那裏指定。 –

相關問題