假设每个以太网有一个具有两个不同IP地址的网卡,例如
eth0 having IP address if 1.2.3.4
eth1 having IP address if 5.6.7.8
我可以为每个IP地址打开一个连接,例如 1234 ,例如
1.2.3.4 binds on 1234
and
5.6.7.8 binds on 1234
或者我应该得到端口已经绑定的错误
我可以为IPv4执行此操作,为IPv6执行一个,不确定同一台计算机上的不同IP地址和相同端口是否可用
答案 0 :(得分:0)
您不拥有“具有两个不同IP地址的网址”。 您有两个nics ,每个都有一个唯一的IP地址。 在这些情况下,在每个ip / nic上打开相同的端口(并绑定)是正确的。
答案 1 :(得分:0)
一个nic有两个不同的ip? 什么是eth0,eth1?它显示了两个nics。
无论如何,如果你的机器有两个nics,你可以绑定。 但是你的机器有一个nic和两个ip地址,使用INADDR_ANY。
struct sockaddr_in sin;
sin.sin_family = AF_NET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons(1234);
bind( sock, ...., (struct sockaddr*)&sin, ... );
如果接口使用IPv6地址,则套接字域必须为AF_INET6。
int sock = socket( AF_INET6 , ... ,... );