0

c で gethostbyname() を使用してホストの実際の IP アドレスを取得する正しい方法は何ですか。また、DHCP がこのアプローチを潜在的な危険にさらすと人々が言うのはなぜですか?

4

1 に答える 1

0

このgethostbyname()関数は、DNS を使用して名前を検索することにより、ホストに関する情報を返します。

関数の戻りデータ型とパラメーターを以下に示します。

struct hostent* gethostbyname(const char *name);

ホスト名 (この場合は「mail.google.com」) から IP アドレスのリストを抽出する例を以下に示します。

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...
    }
}
于 2015-05-06T08:06:57.397 に答える