Для C / C ++ вы ищете функции семейства gethostbyname()
(см. man gethostbyname
) и inet_ntoa
. gethostbyname()
запрашивает DNS и возвращает список IP-адресов для имени хоста, который затем можно распечатать с помощью inet_ntoa
.
Вот пример программы, которая ищет IP-адреса указанного имени хоста и распечатывает их. Примечание: я не проверял ошибки, так что будьте осторожны!
#include <stdio.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char** argv)
{
struct hostent* host = gethostbyname(argv[1]);
int count = 0;
char** current_addr = host->h_addr_list;
while (*current_addr != NULL)
{
struct in_addr* addr = (struct in_addr*)(*current_addr);
printf("address[%d]: %s\n", count, inet_ntoa(*addr));
++current_addr;
++count;
}
}
Пример с моего компьютера Kubuntu 10.04:
mcc@fatback:~/sandbox/c$ ./gethostbyaddr_ex www.yahoo.com
address[0]: 69.147.125.65
address[1]: 67.195.160.76