0

谢谢你帮助我。我正在尝试使用以下代码在我的 java 程序中运行多个服务器:

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

但代码仅适用于 MyIP=1,有没有办法解决这个问题?

4

1 回答 1

1

如果您询问系统是否可以有多个127.x.x.x地址,那么答案是“这取决于您的操作系统和网络配置”。

在我的 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,那么答案是“否”。

AServerSocket最多可以绑定一个 IP 地址。

如果你想使用多个 IP 地址来监听/接受,那么你需要使用多个ServerSocket实例。

但是,IP 地址 0.0.0.0 称为“本地通配符”地址。如果绑定到这个,你实际上是绑定到所有网络接口(包括环回接口)的 IP 地址

也可以看看:

于 2015-07-16T10:43:21.833 回答