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