简体   繁体   English

BSD套接字问题:inet_ntop返回“0.0.0.0”

[英]BSD Socket issue: inet_ntop returning “0.0.0.0”

I'm trying to get the IP of the machine a socket I've bound is listening on. 我正试图让机器的IP成为我一直在聆听的套接字。 The port number printed works fine, but the address is "0.0.0.0". 打印的端口号工作正常,但地址为“0.0.0.0”。 Here's the relevant code. 这是相关的代码。 res has been passed to getaddrinfo and getsockname before getting to this code. 在获取此代码之前, 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;

What could be wrong? 可能有什么不对?

An address of 0.0.0.0 means that the socket is listening on all addresses. 地址0.0.0.0表示套接字正在侦听所有地址。 A specific address like 127.0.0.1 would mean that the server is just listening on that address, but not on any other ones. 127.0.0.1这样的特定地址意味着服务器只是在监听该地址,而不是在任何其他地址上。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM