程序以 C 语言显示主机名和 IP 地址


在本部分中,我们将学习如何轻松查看到本地系统的主机名和 IP 地址。我们将编写一个 C 程序来查找主机名和 IP。

我们使用了以下几个函数。这些函数有不同的任务。让我们了解一下这些函数及其任务。

函数描述
gethostname()查找本地计算机的标准主机名。
gethostbyname()从主机数据库中查找与主机名相对应的主机信息
iten_ntoa()将 IPv4 Internet 网络地址转换为点分十进制格式的 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

更新于: 2019-07-30

400 次浏览

开启你的 职业

完成课程可获得认证

开始
广告