Gethostbyname(); problème d'utilisation

Résolu/Fermé
Laurent SCHAFFNER - 6 août 2005 à 20:56
Timon1102 Messages postés 354 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 30 décembre 2010 - 6 août 2005 à 21:39
Bonjour je suis débutant en langage C bien que j'ai déjà de l'experience en Flash/PHP et quelques autres langages un peu moins complexe que celui-ci !

je cherche à convertir une redirection DNS (irc.****.fr) en une ip (0.0.0.0) j'essaye donc depuis quelques jours d'utiliser gethostbyname(); le problème étant que je ne maîtrise pas les structures puisque que je débute, j'ai longtemps chercher à savoir faire ça mais à rien ne marche, j'en suis à cette experimentation:

struct hostent *gethostbyname(const char *serv);

Ici gethostbyname renvoi sur hostent les données h_name h_addr_list etc... qui me permettrons de recuperer l'IP de la variable serv qui contient l'adresse pointer par *serv. Seulement je ne sais pas comment faire pour lire ses données ! Dans une tels structure je ne sais pas qu'elle est la variable structurée qui conserve les données renvoyer par gethostbyname...

Pourriez vous m'aidé à trouver une solution svp ?

Si je fais fausse route dans mon apprentissage de l'utilisation de structures n'hésiter pas à me le dire :)

1 réponse

Timon1102 Messages postés 354 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 30 décembre 2010 109
6 août 2005 à 21:39
Salut, je pense qu'il y a plus simple pour s'initier aux structures... mais bon, puisque tel est ton désir...

voici une fonction qui retourne l'adresse ip en fonction du nom
(les uint32_t est le type dans la structure, donc c'est ce que je retourne, mais tu dois pouvoir en faire un int)
uint32_t adresse_ip(const char* hostname) {
  struct hostent * info = gethostbyname(hostname);
  if (!info) {perror("");exit(1) ;}
  return ntohl(*(uint32_t*)info->h_addr_list[0]) ; // network to host --> c'est l'adrese kil fo rendre ds le HOST ORDER
}

@+
0