getaddrinfo et ipv6
-
07-11-2019 - |
Question
J'essaie de comprendre ce que la fonction getAddrinfo renvoie:
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netdb.h>
int main (int argc, char *argv[])
{
struct addrinfo *res = 0 ;
getaddrinfo("localhost", NULL ,NULL,&res);
printf("ai_flags -> %i\n", res->ai_flags) ;
printf("ai_family -> %i\n", res->ai_family) ;
printf("ai_socktype -> %i\n", res->ai_socktype) ;
printf("ai_protocol -> %i\n", res->ai_protocol) ;
printf("ai_addrlen -> %i\n", res->ai_addrlen) ;
struct sockaddr_in* saddr = (struct sockaddr_in*)res->ai_addr;
printf("ai_addr hostname -> %s\n", inet_ntoa(saddr->sin_addr));
freeaddrinfo(res);
return 0 ;
}
résultats :
ai_flags -> 40
ai_family -> 2
ai_socktype -> 1
ai_protocol -> 6
ai_addrlen -> 16
ai_addr hostname -> 127.0.0.1
Dans / etc / hôtes, j'ai:
127.0.0.1 localhost
::1 localhost
GetAddrinfo ne renvoie que 127.0.0.1 et non :: 1? Je ne comprends pas pourquoi?
La deuxième question est de savoir où puis-je trouver le sens de ces INT (40,2,1,6, etc.)? J'ai lu l'homme mais il n'y a rien à ce sujet.
Je voulais également savoir s'il est possible de donner une adresse IPv6 (par exemple :: 1) et la fonction renvoie le nom: localhost?
Merci beaucoup !!
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow