我有一个网络地址,例如 - 192.168.74.0/24。尝试使用 getaddrinfo 获取网络地址转换似乎不起作用。这里的名称是 192.168.74.0/24。 getaddrindo 的返回值为 -2。适用于没有前缀的 ipv4 地址。
static const struct addrinfo hint = {
.ai_family = AF_UNSPEC,
.ai_flags = AI_NUMERICHOST
};
struct addrinfo *ai;
int ret;
ret = getaddrinfo(name, NULL, &hint, &ai);
if (ret) {
printf("cannot parse '%s'", name);
return false;
}
最佳答案
至少在我的 header 版本中,-2 是 EAI_NONAME
,“名称或服务未知”。从您的代码中不清楚变量 name
中的内容是什么?字符串“192.168.74.0/24”?
无论如何,从getaddrinfo
的文档中:
Given node and service, which identify an Internet host and a service [...]
您输入的不是互联网主机,而是整个网络。你想要完成什么?
关于c - getaddrinfo 不适用于网络地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503616/