【问题标题】:Bogus IP Address from getaddrinfo & inet_ntop来自 getaddrinfo 和 inet_ntop 的虚假 IP 地址
【发布时间】:2010-12-30 07:35:12
【问题描述】:

我一直在使用 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 等于端口号。有没有人见过这种情况,或者有人能猜出它为什么给我这个吗?

【问题讨论】:

    标签: c++ sockets ip-address getaddrinfo


    【解决方案1】:

    你不应该过去

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

    inet_ntop?

    【讨论】:

    • 是的,这可能会有所帮助。 :P 谢谢!它实际上是 &((const sockaddr_in *)info->ai_addr)->sin_addr
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2012-11-06
    • 2014-03-29
    • 1970-01-01
    • 2011-12-05
    • 2013-08-20
    相关资源
    最近更新 更多