• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Linux C 获取本机相关信息

Linux 水墨上仙 3015次浏览

Linux C hostent结构体 获取主机信息

/*
*@Abstract getHostInformation
*/
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#define NET_ADDR_STR_LEN 16		//16个字节,用于存放点分十进制IP地址的字符串长度
int main(int argc,char **argv)
{
	struct hostent *host;	//存放主机信息
	char addr_p[NET_ADDR_STR_LEN]; //用于存放点分十进制IP地址的字符串
	int i;
	if((host = gethostent()) == NULL)
	{
		perror("fail to get host's information\n");
		exit(1);
	}
	printf("hostName: %s\n" , host->h_name);
	for(i = 0 ; host->h_aliases[i] != NULL;i++)
	{
		printf("%s\n" , host->h_aliases[i]);		//主机别名列表,可以又很多,以二维数组形式存储   h_aliases[0] 为主机IP
	}
	if(host->h_addrtype == AF_INET)		//判断IP类型是否是ipv4
	{
		printf("at_inet\n");
	}
	else
	{
		printf("unix_inet\n");
	}
	printf("len%d\n",host->h_length);	//地址长度
	for(i = 0 ; host->h_addr_list[i] != NULL ; i++)
	{
		//该地址以二进制形式存储,转换为字符串的形式
		printf("%s\n",inet_ntop(host->h_addrtype,host->h_addr_list[i],addr_p,NET_ADDR_STR_LEN));		//打印主机IP地址
	}
	return 0;
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Linux C 获取本机相关信息
喜欢 (0)
加载中……