在本节中,我们将看到如何以更简单的方式查看本地系统的主机名和IP地址。我们将编写一个C程序来查找主机名和IP。
以下是一些使用的函数。这些函数有不同的任务。让我们看看这些函数及其任务。
函数 | 描述 |
---|---|
gethostname() | 它查找本地计算机的标准主机名。 |
gethostbyname() | 它从主机数据库中查找与主机名对应的主机信息。 |
iten_ntoa() | 它将IPv4互联网网络地址转换为点分十进制格式的ASCII字符串。 |
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> void check_host_name(int hostname) { //This function returns host name for local computer if (hostname == -1) { perror("gethostname"); exit(1); } } void check_host_entry(struct hostent * hostentry) { //find host info from host name if (hostentry == NULL) { perror("gethostbyname"); exit(1); } } void IP_formatter(char *IPbuffer) { //convert IP string to dotted decimal format if (NULL == IPbuffer) { perror("inet_ntoa"); exit(1); } } main() { char host[256]; char *IP; struct hostent *host_entry; int hostname; hostname = gethostname(host, sizeof(host)); //find the host name check_host_name(hostname); host_entry = gethostbyname(host); //find host information check_host_entry(host_entry); IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0])); //Convert into IP string printf("Current Host Name: %s", host); printf("Host IP: %s
", IP); }
Current Host Name: soumyadeep-VirtualBox Host IP: 127.0.1.1