多个接口绑定在同一端口上

时间:2014-05-21 08:58:30

标签: networking

假设每个以太网有一个具有两个不同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地址和相同端口是否可用

2 个答案:

答案 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 , ... ,... );