Ben je dirais que gethostbyaddr() permet d'obtenir le nom d'host grâce à l'adresse, mais ce n'est qu'une traduction du nom de la fonction !
Comme je suis de bonne humeur, je t'ai même fait un copier coller du man de cette fonction :
struct hostent * : gethostbyaddr(const void *addr, int len, int type);
The gethostbyaddr() function returns a structure of type hostent for the given host address addr of length len and address type type. Valid address types are AF_INET and AF_INET6. The host address argument is a pointer to a struct of a type depending on the address type, for example a struct in_addr * (probably obtained via a call to inet_addr()) for address type AF_INET.
struct hostent
{
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
}
En gros, tu appelles la fonction avec une adresse IP, une taille, et un type (ici tu ne peux mettre que AF_INET et AF_INET6 qui correspond au protocole IP et IPv6 (normal, tu ne peux demander des noms d'hôtes qu'à partir des adresses IP)), et ça te renvoie une structure (une sorte de tableau) contenant toutes les infos que la fonction a pu récupérer.
Dans cette structure, tu as le nom d'hôte (char *h_name), ce que tu veux récupérer avec la fonction.
Exemple (je suis vraiment gentil ce matin moi !) :
#include <sys/socket.h>
... du code ...
// déclaration/initialisation des variables
struct hostent *adresse ;
adresse = NULL ;
adresse = gethostbyaddr ("195.42.65.71", strlen ("195.42.65.71"), AF_INET) ;
printf ("Le hostname de 195.42.65.71 est %s\n", adresse -> h_name) ;
Ce qui te donneras dans la console :
Le hostname de 195.42.65.71 est blabla.com
Je peux pas faire mieux là je pense !
Enjoy
The lsd