1

GetAddrInfo私は解決するために使用しようとすることができますipv6.google.com

wsaError = getaddrinfo("ipv6.google.com", null, null, ref addrInfo);

返されるソケットエラーコードは11001(そのようなホストは不明です)です。

:非推奨のレガシー関数GetHostByNameはIPv6をサポートしていません。に置き換えられましたGetAddrInfo

奇妙なことは、私が使用nslookupでき、アドレスをうまく見つけることができるということです:

質問

SendRequest(), len 33
    HEADER:
        opcode = QUERY, id = 4, rcode = NOERROR
        header flags:  query, want recursion
        questions = 1,  answers = 0,  authority records = 0,  additional = 0

    QUESTIONS:
        ipv6.google.com, type = A, class = IN

権威ある答え

Got answer (106 bytes):
    HEADER:
        opcode = QUERY, id = 4, rcode = NOERROR
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 1,  authority records = 1,  additional = 0

    QUESTIONS:
        ipv6.google.com, type = A, class = IN
    ANSWERS:
    ->  ipv6.google.com
        type = CNAME, class = IN, dlen = 9
        canonical name = ipv6.l.google.com
        ttl = 21743 (6 hours 2 mins 23 secs)
    AUTHORITY RECORDS:
    ->  l.google.com
        type = SOA, class = IN, dlen = 38
        ttl = 30 (30 secs)
        primary name server = ns4.google.com
        responsible mail addr = dns-admin.google.com
        serial  = 1486713
        refresh = 900 (15 mins)
        retry   = 900 (15 mins)
        expire  = 1800 (30 mins)
        default TTL = 60 (1 min)

権限のない質問

SendRequest(), len 33
    HEADER:
        opcode = QUERY, id = 5, rcode = NOERROR
        header flags:  query, want recursion
        questions = 1,  answers = 0,  authority records = 0,  additional = 0

    QUESTIONS:
        ipv6.google.com, type = AAAA, class = IN

権威のない答え

Got answer (82 bytes):
    HEADER:
        opcode = QUERY, id = 5, rcode = NOERROR
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 2,  authority records = 0,  additional = 0

    QUESTIONS:
        ipv6.google.com, type = AAAA, class = IN
    ANSWERS:
    ->  ipv6.google.com
        type = CNAME, class = IN, dlen = 9
        canonical name = ipv6.l.google.com
        ttl = 21743 (6 hours 2 mins 23 secs)
    ->  ipv6.l.google.com
        type = AAAA, class = IN, dlen = 16
        AAAA IPv6 address = 2607:f8b0:4009:801::1012
        ttl = 270 (4 mins 30 secs)

------------
Name:    ipv6.l.google.com
Address:  2607:f8b0:4009:801::1012
Aliases:  ipv6.google.com

nslookup解決できないときにアドレスを解決できる原因は何GetAddrInfoですか?そして、それが機能するように私は何を変えることができGetAddrInfoますか?

4

2 に答える 2

2

パラメータを渡して、IPV6 アドレスを操作してみてAF_INET6くださいpHints。これは私のために働いているようです:

struct addrinfo *result = NULL;
struct addrinfo hints;

ZeroMemory( &hints, sizeof(hints) );
hints.ai_family = AF_INET6;
hints.ai_socktype = SOCK_DGRAM;
hints.ai_protocol = IPPROTO_UDP;

dwRetval = getaddrinfo("ipv6.google.com", NULL, &hints, &result);
// check your dwRetval here ...
于 2012-05-26T16:41:23.037 に答える
1

同様の問題がありましたが、コードの問題ではなく、オペレーティング システムの問題でした。次のコマンドは、Windows が WSANO_DATA エラーを発生させる代わりに、IPv6 アドレスを正しく解決したことを意味します。

Netsh インターフェイス teredo は、状態のエンタープライズ クライアントを設定します

ソース:

http://netscantools.blogspot.co.uk/2011/06/ipv6-teredo-problems-and-solutions-on.html

于 2013-06-20T21:09:53.363 に答える