将Java Socket绑定到每个环回地址

时间:2014-12-18 14:06:06

标签: java linux sockets

如何绑定Java Socket以侦听每个环回地址?

http://en.wikipedia.org/wiki/Localhost " IPv4网络标准保留整个127.0.0.0/8地址块以用于环回。这意味着发送到其中一个16,777,214地址(127.0.0.1到127.255.255.254)的任何数据包都将被回送。"

当前实现仅使用SocketImpl.bind(InetAddress host,int port)绑定到localhost / 127.0.0.1。这是假设机器名称将解析为localhost,即127.0.0.1,但似乎在Linux上机器主机名可能绑定到127.0.1.1(例如,见https://serverfault.com/questions/363095/why-does-my-hostname-appear-with-the-address-127-0-1-1-rather-than-127-0-0-1-in)。

另一个软件在本地使用机器的主机名来解析要连接的IP =>尝试连接127.0.1.1,服务器不监听,因为它只绑定到127.0.0.1。

该服务器故障的问题答案链接到https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=316099,其中说:"大多数本地监听的服务都在所有127/8地址上侦听,而不仅仅是在127.0.0.1上。"这就是我想做的事情。

有没有办法做到这一点?或者我希望绑定到127.0.0.1和127.0.1.1就够了吗?

0 个答案:

没有答案