Linux 与任何人绑在一起
如果我将套接字绑定到INADDR_ANY,我知道它将接受服务器上配置的任何IP上的传入连接。假设在进行bind()调用时配置了1个IP,然后配置了一个新IP。是bind()还是只对调用bind()时存在的IP有效?在Linux上,当您绑定到Linux 与任何人绑在一起,linux,sockets,bind,Linux,Sockets,Bind,如果我将套接字绑定到INADDR_ANY,我知道它将接受服务器上配置的任何IP上的传入连接。假设在进行bind()调用时配置了1个IP,然后配置了一个新IP。是bind()还是只对调用bind()时存在的IP有效?在Linux上,当您绑定到INADDR\u ANY时,套接字将保持绑定到0.0.0,并将接受到任何本地IP地址的连接,无论该地址如何更改。只有在建立TCP连接时,单个连接才会绑定到它接收到的IP地址。任何地址上仍可能接收到其他连接。是,它将接受新创建或新配置接口上的连接 通过创建虚拟接
INADDR\u ANY
时,套接字将保持绑定到0.0.0
,并将接受到任何本地IP地址的连接,无论该地址如何更改。只有在建立TCP连接时,单个连接才会绑定到它接收到的IP地址。任何地址上仍可能接收到其他连接。是,它将接受新创建或新配置接口上的连接
通过创建虚拟接口,您可以自己尝试:
/sbin/ifconfig dummy0 172.17.42.99 netmask 255.255.255.255
或者什么的;然后尝试连接到该IP。您可以使用
netstat-l
进行检查-它应该为端口n上的侦听套接字打印0.0.0.0:n(或:对于ipv6为:n)。如果看到每个IP都有多个侦听套接字,则可能无法工作。