【问题标题】:getaddrinfo doesnt work with network addressgetaddrinfo 不适用于网络地址
【发布时间】:2013-10-21 20:01:33
【问题描述】:

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

【问题讨论】:

  • 192.168.74.0/24 不是地址:它指定了网络或地址范围。你期望getaddrinfo 会返回什么?

标签: c linux getaddrinfo


【解决方案1】:

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

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

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

您输入的不是互联网主机,而是整个网络。你想完成什么?

【讨论】:

    猜你喜欢
    • 2014-03-27
    • 2016-08-03
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2012-07-06
    相关资源
    最近更新 更多