2009-06-25 5 views
4

내가 바인딩 한 소켓이 수신 대기중인 컴퓨터의 IP를 가져 오려고합니다. 인쇄 된 포트 번호는 정상적으로 작동하지만 주소는 "0.0.0.0"입니다. 여기에 관련 코드가 있습니다. res은이 코드를 받기 전에 getaddrinfogetsockname으로 전달되었습니다.BSD 소켓 문제 : "0.0.0.0"을 반환하는 inet_ntop

char ip[INET_ADDRSTRLEN]; 
struct sockaddr_in *ipv4 = (struct sockaddr_in *)res->ai_addr; 
void* addr = &(ipv4->sin_addr); 

inet_ntop(res->ai_family, addr, ip, sizeof ip); 

std::cout << "SERVER_ADDRESS " << ip << std::endl; 
std::cout << "SERVER_PORT " << ipv4->sin_port << std::endl; 

무엇이 잘못 될 수 있을까?

답변

6

주소가 0.0.0.0이면 소켓이 모든 주소에서 수신 대기 중임을 나타냅니다. 127.0.0.1과 같은 특정 주소는 서버가 그 주소에서 수신 중이지만 다른 주소에서는 수신하지 않고 있다는 것을 의미합니다.