2014-05-21 1 views
0

내가 예를 들어 각각의 IP 주소에 대한 하나 개의 포트 예 1,234과 접속할 수 있으면 예여러 인터페이스 바인드

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 

또는 나는 w 확실하지 않은이 IPv4의 하나는 IPv6에 대한 하나를 할 수

포트가 이미 결합 될 수있는 오류가 발생한다 다른 컴퓨터의 IP 주소와 포트가 동일하거나 다를 수 있습니다.

답변

0

에는 "두 개의 다른 IP 주소가있는 NIC"가 없습니다. 두 개의 접미어, 각각 고유 한 IP 주소가 있습니다. 이러한 상황에서는 각 ip/nic에서 동일한 포트 (및 바인드)를 열어야합니다.

0

nic에는 2 개의 다른 ip가 있습니까? eth0, eth1이란 무엇입니까? 그것은 2 개의 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 , ... ,...); 
관련 문제