Ошибка сокета BSD: inet_ntop возвращает "0.0.0.0" - PullRequest
4 голосов
/ 25 июня 2009

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

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;

Что может быть не так?

1 Ответ

6 голосов
/ 25 июня 2009

Адрес 0.0.0.0 означает, что сокет прослушивает все адреса. Конкретный адрес, такой как 127.0.0.1, будет означать, что сервер просто прослушивает этот адрес, но не любой другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...