Connaître l’adresse IP d’une machine à partir de son nom

Problème

Vous disposez du nom d’une machine et souhaitez connaître son adresse IP à partir de celui-ci.

Solution

Utilisez gethostbyname().

Discussion

La fonction gethostbyname() permet d’obtenir des informations sur la machine dont nous fournissons le nom. Parmi ces informations se trouve la liste des adresses IP de la machine que la fonction inet_ntoa() permet de transformer en chaîne de caractères. Voici un exemple :


#include <stdio.h> 
#include <stdlib.h> 
#include <netdb.h> 
 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 
 
int 
main (int argc, char **argv) 
{ 
  struct hostent *host_entry; 
  int i; 
 
  if (argc < 2) 
    { 
      fprintf (stderr, "Précisez le nom d'une machine sur la ligne " 
                       "de commande\n"); 
      exit (EXIT_FAILURE); 
    } 
 
  printf ("Nom : %s\n", argv[1]); 
 
  if (NULL == (host_entry = gethostbyname (argv[1]))) 
    { 
      fprintf (stderr, "Échec de gethostbyname()\n"); 
      exit (EXIT_FAILURE); 
    } 
 
  for (i = 0; host_entry->h_addr_list[i]; i++) 
    printf ("Adresse IP : %s\n", 
            inet_ntoa (*(struct in_addr *) host_entry->h_addr_list[i])); 
 
  exit (EXIT_SUCCESS); 
}
 

Voici un résultat :


Nom : localhost ...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Connaître le nom et l'adresse IP de ma machine
Suivant
Créer un serveur TCP/IP multi-processus