查找本地计算机的主机名和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
输出因机器而异。