2014-05-21 67 views
0

假设具有两个不同的IP地址为每个以太网为例如多个接口的绑定

eth0 having IP address if 1.2.3.4 
eth1 having IP address if 5.6.7.8 

我可以打开一个端口例如为每个IP地址例如连接的NIC

1.2.3.4 binds on 1234 
and 
5.6.7.8 binds on 1234 

或者我应该得到的端口已经被绑定错误

我可以做这一个IPv4和一个IPv6的,不知道w^hether不同ip地址和同一台机器上的同一端口是否可以工作

回答

0

不要有“有两个不同IP地址的网卡”。 你有两个nics,每个都有一个独特的IP地址。 在这种情况下,在每个ip/nic上打开相同的端口(并绑定)是正确的。

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