Network programming 绑定和ip别名

Network programming 绑定和ip别名,network-programming,Network Programming,Ip别名允许我们将多个Ip地址关联到同一接口。我的问题是如何绑定并因此从与接口关联的所有地址接收数据?是否有类似INADR\u ANY的选项可用于此目的?尝试使用and\u BINDTODEVICE绑定到接口。请始终记住,绑定(2)不会绑定到接口,而是绑定到地址 每个套接字通常只存储一个绑定,即使是0.0.0.0端口0。只是在检查传入请求时,将0.0.0.0、::和端口0作为通配符。因此,非通配符地址需要一个套接字 如果您确实需要接口绑定,请参阅setsockopt SO_BINDTODEVIC

Ip别名允许我们将多个Ip地址关联到同一接口。我的问题是如何绑定并因此从与接口关联的所有地址接收数据?是否有类似INADR\u ANY的选项可用于此目的?

尝试使用and\u BINDTODEVICE绑定到接口。

请始终记住,绑定(2)不会绑定到接口,而是绑定到地址

每个套接字通常只存储一个绑定,即使是0.0.0.0端口0。只是在检查传入请求时,将0.0.0.0、::和端口0作为通配符。因此,非通配符地址需要一个套接字


如果您确实需要接口绑定,请参阅setsockopt SO_BINDTODEVICE,但这通常不是在程序中执行的正确操作,例如tcpdump,因为它将禁止通过不同接口进行联系,即使它们允许接收。例如,如果您自己的主机在专用LAN上有192.168.0.1作为地址,绑定到eth1将无法通过lo从.0.1本身连接到192.168.0.1。因此,设备绑定通常是不需要的。

INADDR\u ANY将绑定到所有接口上的所有ip地址。我不想要它。我想绑定到一个特定接口的所有ip地址。一个选项是检索与接口关联的ip地址列表,然后分别对每个地址调用bind。