2009-06-25 10 views
4

Я пытаюсь получить IP-адрес устройства, которое прослушивает сокет, который я связал. Номер порта, который печатается, работает нормально, но адрес «0.0.0.0». Вот соответствующий код. res был отправлен до getaddrinfo и getsockname, прежде чем перейти к этому коду.Проблема с BSD Socket: inet_ntop return "0.0.0.0"

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, означает, что сервер просто прослушивает этот адрес, но не на других.