GetAddrInfoW得到只有全球ipv6地址

问题描述:

我只需要我的全球IPv6地址,而不是本地链接地址。如msdn中所述,我已将ai_flags设置为AI_ADDRCONFIG。但GetAddrInfoW返回全局和本地链接地址。有没有什么办法可以从ADDRINFOW找出结果结构的地址类型?GetAddrInfoW得到只有全球ipv6地址

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 
     ); 

我猜想API没有提供某些东西来获取全局IPv6地址。我设法根据IPv6地址格式来识别全球地址。从Wiki,范围可以用来标识链路本地地址。