Функция 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...
}
}
https://msdn.microsoft.com/en-us/library/windows/desktop/ms738524(v=vs.85).aspx – Abhineet
Символ * правильный * подход не использовать 'gethostbyname () 'вообще. Он устарел. Вместо этого используйте 'getaddrinfo()'. Что касается того, почему либо * потенциально опасно, потому что он зависит от поиска DNS, а DNS-атаки и неисправные конфигурации DNS могут сообщать ложную информацию. –