Question

Je recherche une fonction qui prend une adresse IPv6 comme argument et renvoie le nom de domaine.

Pour indiquer clairement, 2a00: 1450: 8006 :: 68 renvoie ipv6.google.com.

(L'objectif est de donner ce nom de domaine à la fonction getAddrinfo.)

Merci :-)

Edit1: J'ai essayé getaddrinfo("2a00:1450:8006::68", "http", NULL, &result); , il renvoie "la famille d'adresses pour le nom d'hôte non pris en charge" et getaddrinfo("ipv6.google.com", "http", NULL, &result); Renvoie une erreur "Aucune adresse n'est associée à Hotname".

Edit2: Je suis d'accord avec vous, j'ai des problèmes avec le système IPv6, j'ai essayé http://test-ipv6.com/ Et il semble que je n'ai pas d'adresse IPv6 mais avec ifconfig il revient:

adr inet6: fe80::15b:fcff:fe65:d516/64 Scope:Lien
Était-ce utile?

La solution

Je pense que vous n'avez pas de configuration IPv6 valide. getaddrinfo() ne renverra que des réponses IPv6 qui sont accessibles, donc si votre système n'a pas d'adresse IPv6 avec une portée globale et une route vers l'adresse résolue, le résultat sera supprimé de l'ensemble de résultats.

L'idée de base est que vous appelez getaddrinfo Une fois et obtenir une liste d'adresses auxquelles se connecter - si cette liste devait inclure des adresses inaccessibles, les programmes devraient se présenter à un délai d'attente avant d'essayer une autre adresse.

"La famille d'adresses pour le nom d'hôte non pris en charge" signifie qu'il a reconnu que l'adresse est une adresse IPv6 qui n'a pas besoin d'être résolue via DNS, il essaie donc de le faire correspondre à la liste des familles d'adresses autorisées, échoue et renvoie l'erreur.

La résolution du nom d'hôte tente d'obtenir un enregistrement "A" pour le nom d'hôte, car cela convient à la seule famille d'adresses prise en charge localement. Aucun enregistrement de ce type n'existe, il renvoie donc les informations sur lesquelles aucun enregistrement n'existe. Puisqu'il n'a jamais demandé l'adresse IPv6 (qui aurait été inutile), il ne se plaint pas de l'inadéquation de la famille d'adresses ici.

Autres conseils

Vous avez raison d'utiliser getaddrinfo Comme première étape, mais il ne peut pas faire de recherches à DNS inversé pour vous. Vous devrez utiliser getaddrinfo pour convertir la forme de chaîne de l'adresse en un sockaddr, auquel vous pouvez ensuite passer getnameinfo Pour faire la recherche inverse.

Cela dit, je pense que le commentaire de Carl est également pertinent. Il semble que votre système soit configuré pour ne pas prendre en charge IPv6 ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top