2009-06-25 13 views
4

私がバインドしているソケットがリッスンしているマシンのIPを取得しようとしています。印刷されたポート番号は正常に動作しますが、アドレスは「0.0.0.0」です。関連するコードは次のとおりです。 resgetaddrinfogetsocknameに渡されました。BSDソケットの問題:inet_ntopが "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のような特定のアドレスは、サーバーがそのアドレスをリッスンしているだけで、他のアドレスではリッスンしていないことを意味します。