BSD套接字问题:inet_ntop返回"0.0.0.0"

Ben*_*n S 4 c c++ sockets inet-socket

我正试图让机器的IP成为我一直在聆听的套接字.打印的端口号工作正常,但地址为"0.0.0.0".这是相关的代码.res已经传递到此代码之前getaddrinfogetsockname之前.

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;
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?

sth*_*sth 6

地址0.0.0.0表示套接字正在侦听所有地址.一个特定的地址127.0.0.1就意味着服务器只是在监听该地址,而不是在任何其他地址上.