
查找本地计算机的主机名和IP地址的方法有很多。这是使用C程序查找主机名和IP地址的简单方法。
我们将使用以下功能:
gethostname() :gethostname函数检索本地计算机的标准主机名。
gethostbyname() :gethostbyname函数从主机数据库中检索与主机名相对应的主机信息。
inet_ntoa():inet_ntoa函数将(Ipv4)Internet网络地址转换为Internet标准点分十进制格式的ASCII字符串。
// C program to display hostname // and IP address #include  #include  #include  #include  #include  #include  #include  #include  #include    // Returns hostname for the local computer void checkHostName(int hostname) {     if (hostname == -1)     {         perror("gethostname");         exit(1);     } }   // Returns host information corresponding to host name void checkHostEntry(struct hostent * hostentry) {     if (hostentry == NULL)     {         perror("gethostbyname");         exit(1);     } }   // Converts space-delimited IPv4 addresses // to dotted-decimal format void checkIPbuffer(char *IPbuffer) {     if (NULL == IPbuffer)     {         perror("inet_ntoa");         exit(1);     } }   // Driver code int main() {     char hostbuffer[256];     char *IPbuffer;     struct hostent *host_entry;     int hostname;       // To retrieve hostname     hostname = gethostname(hostbuffer, sizeof(hostbuffer));     checkHostName(hostname);       // To retrieve host information     host_entry = gethostbyname(hostbuffer);     checkHostEntry(host_entry);       // To convert an Internet network     // address into ASCII string     IPbuffer = inet_ntoa(*((struct in_addr*)                            host_entry->h_addr_list[0]));       printf("Hostname: %s", hostbuffer);     printf("Host IP: %s", IPbuffer);       return 0; } 输出:
Hostname: cContainerHost IP: 10.98.162.101输出因机器而异。