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) { //此函数返回主机名
local computer
if (hostname == -1) {
perror("gethostname");
exit(1);
}
}
void check_host_entry(struct hostent * hostentry) { //从中查找主机信息
host name
if (hostentry == NULL) {
perror("gethostbyname");
exit(1);
}
}
void IP_formatter(char *IPbuffer) { //将 IP 字符串转换为点分十进制
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)); //找到主机名
check_host_name(hostname);
host_entry = gethostbyname(host); //查找主机信息
check_host_entry(host_entry);
IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0]));
//转换成IP字符串
printf("Current Host Name: %s\n", host);
printf("Host IP: %s\n", IP);
}
输出(在 Linux 系统上测试)
Current Host Name: soumyadeep-VirtualBoxHost IP: 127.0.1.1
以上是 C 程序来显示主机名和 IP 地址 的全部内容, 来源链接: utcz.com/z/317436.html