主机名与IP地址

时间:2014-10-24 02:31:15

标签: port ip-address hostname

我目前正在将openssl应用到我的应用程序中。当我必须设置BIO的主机名,IP地址和端口时,我的问题出现了。我一直都知道ip和hostname是一回事。有人可以解释一下这个区别。

2 个答案:

答案 0 :(得分:12)

主机名是计算机名称和域名(例如machinename.domain.com)的组合。主机名的目的是可读性 - 它比IP地址更容易记忆。所有主机名都解析为IP地址,因此在很多情况下,它们都被称为可以互换。

答案 1 :(得分:0)

主机名可以有多个IP地址,但不是相反。如果你结账

https://beej.us/guide/bgnet/html/multi/gethostbynameman.html

你会看到gethostbyname()返回特定主机的地址列表。为了证明这一点,这是一个小程序:

#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int main(int argc, char** argv)
{
    if (argc < 2)
    {
        printf("usage: %s hostname\n", argv[0]);
        return 0;
    }

    struct in_addr addr;
    struct hostent* he = gethostbyname(argv[1]);

    if (!he)
    {
        perror("gethostbyname");
        return 1;
    }

    printf("IP addresses for %s:\n\n", he->h_name);

    for (int i = 0; he->h_addr_list[i]; i++)
    {
        memcpy(&addr, he->h_addr_list[i], sizeof(struct in_addr));
        printf("%s\n", inet_ntoa(addr));
    }

    return 0;
}

进入www.yahoo.com,我得到以下内容:

98.137.246.8
98.137.246.7
98.138.219.232
98.138.219.231