test_gethostbyname.c revision e16cb84e2324f05334d18dcf5956f20f44262b62
1e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <unistd.h> 2e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <errno.h> 3e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <string.h> 4e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <stdio.h> 5e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <sys/types.h> 6e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <netdb.h> 7e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 8e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectint main( int argc, char** argv ) 9e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{ 10e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project char* hostname = "localhost"; 11e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project struct hostent* hent; 12e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project int i, ret; 13e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 14e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project if (argc > 1) 15e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project hostname = argv[1]; 16e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 17e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project hent = gethostbyname(hostname); 18e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project if (hent == NULL) { 19e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("gethostbyname(%s) returned NULL !!\n", hostname); 20e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project return 1; 21e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 22e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( "gethostbyname(%s) returned:\n", hostname); 23e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( " name: %s\n", hent->h_name ); 24e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( " aliases:" ); 25e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project for (i = 0; hent->h_aliases[i] != NULL; i++) 26e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( " %s", hent->h_aliases[i] ); 27e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( "\n" ); 28e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( " address type: " ); 29e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project switch (hent->h_addrtype) { 30e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project case AF_INET: printf( "AF_INET\n"); break; 31e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project case AF_INET6: printf( "AF_INET6\n"); break; 32e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project default: printf("UNKNOWN (%d)\n", hent->h_addrtype); 33e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 34e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( " address: " ); 35e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project switch (hent->h_addrtype) { 36e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project case AF_INET: 37e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project { 38e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project const char* dot = ""; 39e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project for (i = 0; i < hent->h_length; i++) { 40e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("%s%d", dot, ((unsigned char*)hent->h_addr)[i]); 41e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project dot = "."; 42e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 43e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 44e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project break; 45e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 46e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project default: 47e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project for (i = 0; i < hent->h_length; i++) { 48e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf( "%02x", ((unsigned char*)hent->h_addr)[i] ); 49e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 50e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project } 51e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("\n"); 52e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project return 0; 53e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project} 54