This is a short example of using gethostbyname in C on linux. It is used to lookup a hostname and get a list of ip addresses for that host.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#include <netdb.h>
#include <sys/socket.h>

#include <netinet/in.h>
#include <arpa/inet.h>

char *addrtype(int addrtype) {
        switch(addrtype) {
                case AF_INET:
                        return "AF_INET";
                case AF_INET6:
                        return "AF_INET6";
        }
        return "Unknown";
}

int main(int argc, char **argv) {
        struct hostent *tmp = 0;
        int i = 0;

        if (argc < 2) {
                printf("Usage: %s <hostname>\n", argv[0]);
                exit(EXIT_FAILURE);
        }

        tmp = gethostbyname(argv[1]);

        if (!tmp) {
                printf("Lookup Failed: %s\n", hstrerror(h_errno));
                return 0;
        }

        printf("Lookup: %s\n", argv[0]);
        printf("h_name: %s\n", tmp->h_name);

        i = 0;
        while(tmp->h_aliases[i] != NULL) {
                printf("h_aliases[i]: %s\n", tmp->h_aliases[i]);
                i++;
        }

        printf("h_addrtype: %d - %s\n", tmp->h_addrtype, addrtype(tmp->h_addrtype));
        printf("h_length: %d\n", tmp->h_length);

        i = 0;
        while(tmp->h_addr_list[i] != NULL) {
                printf("h_addr_list[i]: %s\n", inet_ntoa( (struct in_addr) *((struct in_addr *) tmp->h_addr_list[i])));
                i++;
        }

        return 0;
}


Did You find this page useful?

Yes No



Last Modified: 14 December 2016

Releated Posts


2017-04-25 - Linux Programming - Signals the easy way
2017-03-01 - Shooting yourself in the head with threads
2013-02-16 - C - Some simple examples of using strcat
2012-11-03 - C - How to override malloc / free
2012-09-22 - Linux Programming - Using inotify for detecting file modifications
2012-08-09 - C++ - Check an IP Address is in a IP Mask
2012-04-05 - Using gdb to debug a core file
2012-03-15 - C - Is the stdin a tty
2012-03-13 - C - Converting from char / string to int using atoi
2012-03-08 - C - UDP Socket example
2012-02-20 - C - Get home dir location in linux
2012-02-17 - C - IP address validation
2012-02-15 - C - Get current ip address of an interface
2012-02-10 - Using asprintf instead of sprintf or snprintf
2012-01-31 - C - Example of how to overwrite argv
2012-01-30 - C - The string reverse
2012-01-27 - C - Palindrome
2012-01-26 - C - Example of using popen
2011-12-28 - C - gethostbyname example
2011-12-11 - C - Linux get mac address from interface