GetAddrInfoW只获取全局ipv6地址

时间:2015-09-03 06:23:18

标签: visual-c++

我只需要我的全局IPv6地址而不是本地链接地址。我已按照msdn中的说明将ai_flags设置为AI_ADDRCONFIG。但GetAddrInfoW返回全局和本地链接地址。有什么方法可以从ADDRINFOW结果结构中找出地址类型吗?

 std::wstring whostname = L"hostname";
    ADDRINFOW hints;
        memset(&hints, 0, sizeof(ADDRINFOW));
        hints.ai_family = AF_UNSPEC;      // IPv4 and IPv6
        hints.ai_socktype = SOCK_STREAM;  // TCP only, no UDP
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags = AI_ADDRCONFIG; // Get only global IPv6 address

    ADDRINFOW *list = NULL;
    result = GetAddrInfoW(
        whostname.c_str(), 
        NULL,             
        &hints,
        &list
        );

1 个答案:

答案 0 :(得分:0)

我想API没有提供任何东西来获取全局IPv6地址。我已设法根据IPv6地址格式识别全局地址。从Wiki开始,范围可用于标识链接本地地址。