2011-06-13 10 views
11

का उपयोग करके मेरे कार्ड के आईपीवी 4 और आईपीवी 6 पते को समझाते हुए मैं अपने पीसी कार्ड के सभी नेटवर्क कार्ड (मेरे पास 2 कार्ड्स) के आईपीवी 4 और आईपीवी 6 पते की गणना करने की कोशिश कर रहा हूं।बूस्ट एएसआई

मैं ऐसा करने के लिए निम्न कोड का उपयोग कर रहा हूं।

using boost::asio::ip::tcp; 
boost::asio::io_service io_service; 

    tcp::resolver resolver(io_service); 
    tcp::resolver::query query(boost::asio::ip::host_name(),""); 
    tcp::resolver::iterator it=resolver.resolve(query); 

    while(it!=tcp::resolver::iterator()) 
    { 
     boost::asio::ip::address addr=(it++)->endpoint().address(); 
     if(addr.is_v6()) 
     { 
      std::cout<<"ipv6 address: "; 
     } 
     else 
      std::cout<<"ipv4 address: "; 

     std::cout<<addr.to_string()<<std::endl; 

    } 

कोड सही ipv4 पते प्रदर्शित करता है लेकिन ipv6 नहीं। यहां आउटपुट

ipv6 address: ::1 
ipv4 address: 192.168.10.200 
ipv4 address: 192.168.10.236 

मेरे पास ipv6 का न्यूनतम ज्ञान है। मैं नेटवर्क इंटरफेस की जानकारी को सूचीबद्ध जब ipconfig का उपयोग कर/सब मुझे लगता है कि वास्तविक IPv6 पते दिए गए हैं

fe80::226:5aff:fe14:5687%5 
fe80::225:64ff:feb2:4f61%4 

कोई मुझे मार्गदर्शन कृपया कैसे IPv6 पतों को सूचीबद्ध करने के कर सकते हैं देखते हैं। धन्यवाद।

+1

'fe80 ::' लिंक स्थानीय गुंजाइश को संबोधित करते यह संभव बूस्ट है केवल वैश्विक गुंजाइश पतों विश्लेषण करता है। –

उत्तर

7

मंच विंडोज 7 SP1 लिंक स्थानीय इंटरफेस को छोड़ दिया जा रहा है के रूप में वे टैग किए गए हैं "skipassource" विंडोज द्वारा जिसका अर्थ है कि getaddrinfo उन्हें नहीं लौटेगा और इसलिए न तो बढ़ावा देगा।

आप निम्न आदेश के साथ ध्वज का निरीक्षण करने की कोशिश कर सकते हैं:

netsh int ipv6 show addresses level=verbose 

Address fe80::e0:0:0:0%14 Parameters 
--------------------------------------------------------- 
Interface Luid  : Teredo Tunneling Pseudo-Interface 
Scope Id   : 0.14 
Valid Lifetime  : infinite 
Preferred Lifetime : infinite 
DAD State   : Deprecated 
Address Type  : Other 
Skip as Source  : **true** 
संबंधित मुद्दे