Bonjour,
Dans mon programme j'utilisais ce code pour récupérer l'adresse IP de ma machine :
Et ça marchait, mais des fois gethostbyname me renvoyait NULL. En fait il fallait lancer plusieurs fois le programme avant d'obtenir l'adresse IP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 char hostname[512]; hostent *h; hostname[511] = '\0'; gethostname(hostname, 511); h = gethostbyname(hostname); if (h == NULL) { return -1; } string addrIP = inet_ntoa(*((in_addr *)h->h_addr));
Je suis donc allé voir la msdn qui me dit que cette fonction est dépreciée et qu'il faut utiliser getaddrinfo. Au passage, je suis sous windows et j'utilise VS2008.
J'essaie donc de faire :
toujours avec le meme hostname.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 memset (&hints, 0, sizeof (hints)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags |= AI_CANONNAME; errcode = getaddrinfo (hostname, NULL, &hints, &res); if (errcode != 0) { printf("%s", gai_strerror(errcode)); return -1; }
Mais cela n'est plus fructueux, j'ai un code d'erreur. Est-ce que je l'utilise bien ?
Je n'arrive pas vraiment à comprendre les docs que je trouve sur cette fonction, j'ai juste besoin d'un exemple simple pour récupérer l'ip locale et je ne trouve pas.
Partager