为什么不将下面的代码抛出一个“java.net.BindException:地址已在使用:JVM_Bind”异常?
import java.net.InetSocketAddress;
import java.net.ServerSocket;
public class Test
{
public static void main(String[] args) throws Exception
{
try (ServerSocket socket1 = new ServerSocket();
ServerSocket socket2 = new ServerSocket();
ServerSocket socket3 = new ServerSocket())
{
int port = 10000;
socket1.setReuseAddress(false);
socket1.bind(new InetSocketAddress("0.0.0.0", port));
socket2.setReuseAddress(false);
socket2.bind(new InetSocketAddress("127.0.0.1", port));
socket3.setReuseAddress(false);
socket3.bind(new InetSocketAddress("127.0.0.2", port));
Thread.sleep(Long.MAX_VALUE);
}
}
}
运行“netstat的”事后显示:
C:\用户\管理员>的netstat -a -n | FINDSTR 10000 TCP 0.0.0.0:10000 0.0.0.0:0 LISTENING TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING TCP 127.0.0.2:10000 0.0.0.0:0 LISTENING TCP [:]:10000 [:]:0听力
我的Windows Server 2008 R2(64位)上运行这一点,“IPCONFIG / ALL”显示只有一个网络适配器/接口(其它网卡被禁用)。 但是,一些其他的机器,这个程序实际上不会抛出预期“java.net.BindException:地址已在使用中:JVM_Bind”!
可能是什么回事?