2015-05-06 10 views
-1

Каков правильный способ использования gethostbyname() в c для извлечения реального IP-адреса хоста. Также почему люди говорят, что DHCP поставит этот подход в потенциальную опасность?использовать gethostbyname(), чтобы найти IP

+0

https://msdn.microsoft.com/en-us/library/windows/desktop/ms738524(v=vs.85).aspx – Abhineet

+0

Символ * правильный * подход не использовать 'gethostbyname () 'вообще. Он устарел. Вместо этого используйте 'getaddrinfo()'. Что касается того, почему либо * потенциально опасно, потому что он зависит от поиска DNS, а DNS-атаки и неисправные конфигурации DNS могут сообщать ложную информацию. –

ответ

0

Функция gethostbyname() возвращает информацию о хосте, используя DNS для поиска имени.

тип данных возврата функции и параметры показаны ниже:

struct hostent* gethostbyname(const char *name); 

В качестве примера для извлечения списка IP-адресов с именем хоста (в данном случае, «mail.google.com»), показан ниже :

char host_name = "mail.google.com"; 
struct hostent *host_info = gethostbyname(host_name); 

if (host_info == NULL) 
{ 
    return(-1); 
} 

if (host_info->h_addrtype == AF_INET) 
{ 
    struct in_addr **address_list = (struct in_addr **)host_info->h_addr_list; 
    for(int i = 0; address_list[i] != NULL; i++) 
    { 
     // use *(address_list[i]) as needed... 
    } 
} 
else if (host_info->h_addrtype == AF_INET6) 
{ 
    struct in6_addr **address_list = (struct in6_addr **)host_info->h_addr_list; 
    for(int i = 0; address_list[i] != NULL; i++) 
    { 
     // use *(address_list[i]) as needed... 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^