Bonjour,

Dans mon programme j'utilisais ce code pour récupérer l'adresse IP de ma machine :
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));
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.

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 :
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;
	}
toujours avec le meme hostname.
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.