Programmation Avancée en C


inet_aton.c

00001 #include <sys/types.h>
00002 #include <sys/socket.h>
00003 #include <stdio.h>
00004 #include <stdlib.h>
00005 #include <netinet/in.h>
00006 #define __USE_MISC 1
00007 #include <arpa/inet.h>
00008 
00009 int main(int argc, char* argv[]) 
00010 {
00011     struct in_addr addr_by_aton, addr_by_addr; 
00012     if ( argc != 2) {
00013         fprintf(stderr, "Usage: %s <adresse IP>\n",argv[0]);
00014         return EXIT_FAILURE;
00015     }
00016         // Récupération de l'adresse dans addr par inet_aton
00017     if ( !(inet_aton(argv[1], &addr_by_aton)) ) {
00018         fprintf(stderr, "Format invalide d'adresse (%s)\n",argv[1]);
00019     }
00020         // Récupération de l'adresse dans addr par inet_addr
00021     if ( (addr_by_addr.s_addr = inet_addr(argv[1])) == INADDR_NONE) {
00022         fprintf(stderr, "inet_addr a échoué sur l'adresse %s\n",argv[1]);
00023         return EXIT_FAILURE;
00024     }
00025     printf("Adresse récupérée par inet_aton %02x (%s)\n", 
00026            addr_by_aton.s_addr, argv[1]);
00027     printf("Adresse récupérée par inet_addr %02x (%s)\n", 
00028            addr_by_addr.s_addr, argv[1]);
00029         // Récupération de la chaine de caractère via inet_ntoa pour affichage
00030     printf("Affichage via inet_ntoa : %s\n", inet_ntoa(addr_by_aton));
00031     return EXIT_SUCCESS;
00032 }