2009-06-25 86 views
4

我试图获取我绑定的套接字的机器的IP正在侦听。打印的端口号工作正常,但地址是“0.0.0.0”。这是相关的代码。在获取此代码之前,res已传递给getaddrinfogetsocknameBSD套接字问题: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这样的特定地址意味着服务器只是在监听该地址,而不是在其他任何地址上监听。