c++ - 来自 getaddrinfo 和 inet_ntop 的虚假 IP 地址

标签 c++ sockets ip-address getaddrinfo

我一直在使用 getaddrinfo 查找基本套接字命令的套接字地址。不过最近,它返回给我的地址是伪造的 IP 地址,我使用 inet_ntop 发现了这些地址。我已经尝试了我的代码,以及 Beej's Guide 中提供的代码, 它们都产生相同的结果。这是代码:

struct addrinfo hints, *info;
int status;

memset(&hints, 0, sizeof hints);

hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;

if(status = getaddrinfo(address, port, &hints, &info)) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
}

char ip4[INET_ADDRSTRLEN];
inet_ntop(AF_INET, info->ai_addr, ip4, INET_ADDRSTRLEN);

std::cout<<ip4<<std::endl;

无论我使用什么地址,它总是给我一个形式为

的IP

16.2.x.y

其中 256*x + y 等于端口号。有没有人见过这种情况,或者有人能猜出它为什么给我这个吗?

最佳答案

你不应该路过吗

((sockaddr_in const *)info->ai_addr)->sin_addr

inet_ntop

关于c++ - 来自 getaddrinfo 和 inet_ntop 的虚假 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1966687/

相关文章:

c++ - 如何使结构类型定义在 union C++ 之外可见

c - 给定任何 epoll TCP 套接字事件,如果 EPOLLRDHUP=0 且 EPOLLIN=1;后续调用 read()/recv() 是否保证返回不等于 0 的读取大小?

java - Jain Sip - 如何创建没有 @ 的 SipUri?

sockets - 我在 Windows Server 2003 中可以拥有的打开套接字数的上限是多少

c# - 使用 StreamSocket 正确接收数据挂起

c++ - 获取相关的本地 IP 地址/接口(interface)以发送到特定服务器

ios - 如何从 HTML 响应中获取 IPv4 NSString?

c++ - 具有继承的静态变量的行为

c++ - 将#elif 与#ifdef 一起使用是否合法?

c++ - 有没有更简单的方法来过滤非字母字符? C++