簡體   English   中英

我不能在java ServerSocket中分配多個地址

[英]I can't assign more than one Address in java ServerSocket

謝謝你幫我 我正在嘗試使用以下代碼在Java程序中運行多個服務器:

addr = InetAddress.getByName("127.0.0."+MyIP);
ss = new ServerSocket(port,100,addr);

但是該代碼僅適用於MyIP = 1,是否有解決方法?

如果您詢問一個系統是否可以有多個127.xxx地址,那么答案是“這取決於您的操作系統和網絡配置”。

在我的Linux / Fedora 20框上,“ / etc / sysconfig / network-scripts / ifcfg-lo”將所有127.0.0.0/8定義為回送地址。 但是,如果您查看文件,則意味着“ lo”設備可以配置為允許使用更少的地址(或者如果您發瘋的話)將其他地址用作回送IP地址。

在Mac OSX上,默認情況下,唯一配置的環回地址是127.0.0.1,但是很容易進行配置(請參閱參考資料)。

據我了解,在Windows 7上只有一個環回地址-127.0.0.1。 它是硬連線的,並由網絡堆棧專門處理。 Windows確實具有“回送適配器”,但其用途有所不同。

TL; DR-您的代碼將在Linux上運行,但不能在Windows上運行。 在Mac OS / X上,您需要調整網絡配置以使其正常運行。

參考文獻:


如果您詢問是否可以將多個IP地址綁定到單個ServerSocket ,則答案為“否”。

一個ServerSocket最多可以綁定到一個IP地址。

如果要使用多個IP地址進行偵聽/接受,則需要使用多個ServerSocket實例。

但是,IP地址0.0.0.0被稱為“本地通配符”地址。 如果綁定到此,則可以有效地綁定到所有網絡接口(包括環回接口)的IP地址。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM