Linux C 获取本机相关信息

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
/*
*@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;
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:C++编写的用于去除C、C++、Java等语言的注释的代码片段

下一篇:C++内存池实现(非线程安全)