Sockets 侦听多址计算机上的端口

Sockets 侦听多址计算机上的端口,sockets,tcp,tcp-ip,Sockets,Tcp,Tcp Ip,想象一种情况:一台机器有两个IP地址,10.0.0.1和10.0.0.2。程序A创建一个套接字,将其绑定到10.0.0.1、TCP端口1000,然后侦听 然后程序B创建一个套接字,将其绑定到0.0.0.0端口1000,并侦听 会发生什么?程序B是否仅安静地绑定到10.0.0.2?第二次监听呼叫是否会出错?更重要的是,这是一个已定义的场景还是一个实现细节?根据我的经验,程序B将悄悄地绑定到10.0.0.2,但我不知道在哪里记录了它。(它会说它绑定到*,但它不会接收到10.0.0.1的连接)我在ma

想象一种情况:一台机器有两个IP地址,10.0.0.1和10.0.0.2。程序A创建一个套接字,将其绑定到10.0.0.1、TCP端口1000,然后侦听

然后程序B创建一个套接字,将其绑定到0.0.0.0端口1000,并侦听


会发生什么?程序B是否仅安静地绑定到10.0.0.2?第二次监听呼叫是否会出错?更重要的是,这是一个已定义的场景还是一个实现细节?

根据我的经验,程序B将悄悄地绑定到10.0.0.2,但我不知道在哪里记录了它。(它会说它绑定到
*
,但它不会接收到10.0.0.1的连接)我在macOS上执行了一些测试-对这两个地址的
绑定
调用不会产生干扰,而
绑定到
0.0.0
会被绑定到另一个更具体的地址的
所掩盖(无论他们按哪个顺序完成),这样,当第一个端口消失时,第二个程序B就可以接收第一个地址上的连接。在Windows Server 2003和更高版本上,该行为与Alnitak描述的相同。但是,在Windows XP和更早版本上,第二个
绑定
将失败,并出现
WSAEADDRINUSE
错误。此行为在N