Как узнать адрес домена на си?

Допустим я хочу из программы узнать адрес домена google.com здесь говорится что нужно сделать просто так:

struct hostent *host=gethostbyname("google.com");
addr.sin_addr.s_addr = host->h_addr;
printf("IP: %s\n", inet_ntoa(addr.sin_addr));

Но при каждом запуске выводятся разные ip(точно не гугла). Например:

IP: 48.160.173.213

Пробую заменить google.com на localhost, но выводится не 127.0.0.1:

IP: 80.62.213.191

Также пробую указать ip гугла 172.217.16.196, но выводится опять какая-то фигня

У меня выводятся всегда рандомные ip, а не те, которые принадлежат домену. В чем может быть проблема?

P.s несмотря на хорошие комментарии от andreymal, вопрос все еще нуждается в ответе


Ответы (1 шт):

Автор решения: bestorone

Я дурак, надо было погуглить на английском языке, вот рабочий код, который извлекает ip домена - https://www.geeksforgeeks.org/c-program-display-hostname-ip-address/

 // C program to display hostname 
// and IP address 
#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <errno.h> 
#include <netdb.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
 #include <netinet/in.h> 
#include <arpa/inet.h> 

// Driver code 
int main() 
{ 
    char hostbuffer[256]; 
    char *IPbuffer; 
    struct hostent *host_entry; 
    int hostname; 

    // To retrieve hostname 
    hostname = gethostname(hostbuffer, sizeof(hostbuffer)); 

    // To retrieve host information 
    host_entry = gethostbyname(hostbuffer); 

    // To convert an Internet network 
    // address into ASCII string 
    IPbuffer = inet_ntoa(*((struct in_addr*)host_entry->h_addr_list[0])); 

    printf("Hostname: %s\n", hostbuffer); 
    printf("Host IP: %s", IPbuffer); 

    return 0; 
} 
→ Ссылка