gpt4 book ai didi

c - 当我为 localhost 执行 getaddrinfo 时,我没有收到 127.0.0.1

转载 作者:行者123 更新时间:2023-12-04 11:42:32 25 4
gpt4 key购买 nike

我仍在学习套接字,并不清楚为什么这不会打印出 127.0.0.1。即使我用 127.0.0.1 替换了 localhost 这个词,我也会收到一些其他的 ip,我猜是我的路由器之类的。我一直认为这应该返回 127.0.0.1。这是我收到的输出:

hostname: 28.30.0.0
hostname: 28.30.0.0
hostname: 28.30.0.0
hostname: 28.30.0.0
hostname: 16.2.0.0
hostname: 16.2.0.0

下面是基本代码:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>

int main()
{
struct addrinfo* feed_server = NULL;

getaddrinfo("localhost", NULL, NULL, &feed_server);
struct addrinfo *res;
for(res = feed_server; res != NULL; res = res->ai_next)
{
printf("hostname: %s\n", inet_ntoa(*((struct in_addr*)(res->ai_addr))));
}

return 0;
}

最佳答案

res->ai_addr类型为 struct sockaddr* ,不是 struct in_addr* .

你需要做这样的事情:

for(res = feed_server; res != NULL; res = res->ai_next)
{
/* ideally look at the sa_family here to make sure it is AF_INET before casting */
struct sockaddr_in* saddr = (struct sockaddr_in*)res->ai_addr;
printf("hostname: %s\n", inet_ntoa(saddr->sin_addr));
}

关于c - 当我为 localhost 执行 getaddrinfo 时,我没有收到 127.0.0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com