2015-09-03 51 views
0

我只需要我的全球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 
     ); 

回答

0

我猜想API沒有提供某些東西來獲取全局IPv6地址。我設法根據IPv6地址格式來識別全球地址。從Wiki,範圍可以用來標識鏈路本地地址。