#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    struct hostent *he;
    struct in_addr **addr_list;

    int i;
    char name[50];
    int len;
    struct addrinfo *result;

    if (gethostname(name, sizeof(name))) {
     perror("Invalid");
    }

   
    printf("Name: %s\n\n", name);

    printf("IP address: \n\n");

    printf("Using gethostbyname\n");

    he = gethostbyname(name);
   
    addr_list = (struct in_addr **)he->h_addr_list;
    for(i = 0; addr_list[i] != NULL; i++) {
        printf("%s ", inet_ntoa(*addr_list[i]));
    }
    printf("\n\n");


    printf("Using getaddrinfo\n");
   
    if (getaddrinfo(name, NULL, NULL, &result)) {
      perror("Invalid");
    }
     
    printf("%s ", inet_ntoa(((struct sockaddr_in *)result->ai_addr)->sin_addr));

    printf("\n");

    return 0;
}