getaddrinfo不适用于网络地址

时间:2013-10-21 20:01:33

标签: c linux getaddrinfo

我有一个网址,例如 - 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;
    }

1 个答案:

答案 0 :(得分:2)

至少在我的标题版本上,-2是EAI_NONAME,“名称或服务未知”。从代码中不清楚变量name中的内容是什么?字符串“192.168.74.0/24”?

无论如何,来自getaddrinfo的文档:

  

给定节点和服务,用于标识Internet主机和服务[...]

您的输入无法识别互联网主机,而是整个网络。你想要完成什么?