精华内容
下载资源
问答
  • gethostbyname()函数说明——用域名或主机获取IP地址  包含头文件  #include  #include  函数原型  struct hostent *gethostbyname(const char *name);  这个函数的传入值是域名或者主机名,...

    gethostbyname()函数说明——用域名或主机名获取IP地址

        包含头文件
        #include <netdb.h>
        #include <sys/socket.h>

        函数原型
        struct hostent *gethostbyname(const char *name);
        这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。

        返回hostent结构体类型指针
        struct hostent
        {
            char    *h_name;               
            char    **h_aliases;
            int     h_addrtype;
            int     h_length;
            char    **h_addr_list;
            #define h_addr h_addr_list[0]
        };

        hostent->h_name
        表示的是主机的规范名。例如www.google.com的规范名其实是www.l.google.com。
        
        hostent->h_aliases
        表示的是主机的别名.www.google.com就是google他自己的别名。有的时候,有的主机可能有好几个别名,这些,其实都是为了易于用户记忆而为自己的网站多取的名字。

        hostent->h_addrtype    
        表示的是主机ip地址的类型,到底是ipv4(AF_INET),还是pv6(AF_INET6)

        hostent->h_length      
        表示的是主机ip地址的长度

        hostent->h_addr_lisst
        表示的是主机的ip地址,注意,这个是以网络字节序存储的。千万不要直接用printf带%s参数来打这个东西,会有问题的哇。所以到真正需要打印出这个IP的话,需要调用inet_ntop()。

        const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) :
        这个函数,是将类型为af的网络地址结构src,转换成主机序的字符串形式,存放在长度为cnt的字符串中。返回指向dst的一个指针。如果函数调用错误,返回值是NULL。

    复制代码
     1 #include <netdb.h>
     2 #include <sys/socket.h>
     3 #include <stdio.h>
     4 
     5 int main(int argc, char **argv)
     6 {
     7     char   *ptr, **pptr;
     8     struct hostent *hptr;
     9     char   str[32];
    10     ptr = argv[1];
    11 
    12     if((hptr = gethostbyname(ptr)) == NULL)
    13     {
    14         printf(" gethostbyname error for host:%s\n", ptr);
    15         return 0;
    16     }
    17 
    18     printf("official hostname:%s\n",hptr->h_name);
    19     for(pptr = hptr->h_aliases; *pptr != NULL; pptr++)
    20         printf(" alias:%s\n",*pptr);
    21 
    22     switch(hptr->h_addrtype)
    23     {
    24         case AF_INET:
    25         case AF_INET6:
    26             pptr=hptr->h_addr_list;
    27             for(; *pptr!=NULL; pptr++)
    28                 printf(" address:%s\n",
    29                        inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
    30             printf(" first address: %s\n",
    31                        inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));
    32         break;
    33         default:
    34             printf("unknown address type\n");
    35         break;
    36     }
    37 
    38     return 0;
    39 }
    复制代码

    编译运行
    -----------------------------
    # gcc test.c
    # ./a.out www.baidu.com
    official hostname:www.a.shifen.com
    alias:www.baidu.com
    address:121.14.88.11
    address:121.14.89.11
    first address: 121.14.88.11

    感谢http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html



    展开全文
  • Linux获取主机ip

    2019-09-17 11:47:34
    ifconfig | grep 'inet addr' |awk 'NR==1 {print $2}'| awk -F: '{print $2}'
    hostname -i
    
    ifconfig | grep 'inet addr' |awk 'NR==1 {print $2}'| awk -F: '{print $2}'
    
    展开全文
  • linux获取主机名后用gethostbyname() 不能获取主机ip 我在虚拟机上用以下函数能获取主机ip的ip char hostname[256]; if (gethostname(hostname, 256) == 0) { printf("localhost name:%s\n",hostname); ...
    linux获取主机名后用gethostbyname() 不能获取主机ip
    我在虚拟机上用以下函数能获取主机ip的ip
    char hostname[256];
    if (gethostname(hostname, 256) == 0)
    {
    printf("localhost name:%s\n",hostname);
    struct hostent* hostinfo = gethostbyname(hostname);
    
    
    client_value->localip =(uint32_t)((struct in_addr*)hostinfo->h_addr_list[0])->s_addr;
    printf("client_value->localip=%d\n",client_value->localip);
    }


    但是用交叉编译器编译后放到我arm板上就不行能获取主机名但是不是获取ip,提示段错误;
    我在arm板的操作终端输入命令hostname -s会显示主机名 +unknown server error ,在虚拟机下输入该命令就只显示主机名
    哪位高手帮忙指导指导arm板应该怎么设置啊

    ------解决方案--------------------------------------------------------
    获取本机IP,你可以用:
    char* getlocalhostip ()
    {  
        int  MAXINTERFACES=16;
        char *ip=NULL;
       int fd, intrface, retn = 0;
        struct ifreq buf[MAXINTERFACES]; ///if.h
    
        struct ifconf ifc; ///if.h
        if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0) //socket.h
    
        {
    
            ifc.ifc_len = sizeof buf;
    
            ifc.ifc_buf = (caddr_t) buf;
    
            if (!ioctl (fd, SIOCGIFCONF, (char *) &ifc)) //ioctl.h
    
            {
    
                intrface = ifc.ifc_len / sizeof (struct ifreq);
    
    
    
                while (intrface-->0)
    
                {
    
                    if (!(ioctl (fd, SIOCGIFADDR, (char *) &buf[intrface])))
    
                    {
    
                        ip=(inet_ntoa(((struct sockaddr_in*)(&buf[intrface].ifr_addr))->sin_addr));//types
    
                        break;
    
                    }
    
                }
    
            }
    
            close (fd);
    
        }
    
        return ip;
    
    }

    gethostname() gethostbyname()在Linux不好用!
    展开全文
  • Linux查看当前主机ip

    万次阅读 2019-07-08 22:27:16
    ip addr
    ip addr

     

    展开全文
  • linux无法获取ip

    千次阅读 2017-03-24 16:05:43
    1. 无法获取ip原因:网络未开启  首先开启网络:  service network start 或 service network restart Ifconfig -a 只显示了本地的ip127.0.0.1, 如果ifconfig 不可用 可以用 ip add  获取不到...
  • linux 下获取本机ip地址

    千次阅读 2018-08-27 10:18:30
    linux下提供了很多中不同的方法。 1.命令行 ifconfig eth0:表示网卡0 lo:loopback地址,表示本地localhost。 2.通过程序来获取ip地址 #include <iostream> #include <sys/types.h> #include &...
  • 本文介绍在unix环境获取当前主机IP,MAC地址等网络接口信息。在不确定设备网卡类型的情况,通过预先定义几种可能的网卡类型,然后依次遍历可能的设备如eth0,eth1,借助ioctl函数获取主机的全部网络接口信息。
  • Java 获取主机ip地址(ipv4)

    千次阅读 2019-08-27 16:21:27
    java 提供了InetAddress 类来获取主机ip地址, 但是使用的时候需要注意一下细节问题。 1. InetAddress 直接使用InetAddress 的getLocalHost()方法, 获取到的Ip 地址与本机hosts 的配置有关。 如果是linux 环境的...
  • 【python】获取linux主机ip的一种方法

    千次阅读 2013-12-16 13:40:55
    python有好几种方法可以获取主机ip地址。我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便;但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来。所以加多了一个条件判断,如果发现以上...
  • 如何在Windows、Linux获取主机的网络信息和公网地址在我们的日常工作中,我们会需要进行查询主机当下的网络信息和公网上看到的IP地址信息,他们就像是网路上的名片,让我们找到彼此。Windows如何获取内网和公网...
  • linux下获取IP等信息函数

    千次阅读 2011-05-31 18:14:00
    linux下 获取,修改本机IP地址的两个函数//获取本机IP地址函数 view plaincopy to clipboardprint?QString GetLocalIp() { int sock_get_ip; char ipaddr[50]; struct sockaddr_in *sin; struct ifreq...
  • Linux下获取本地IP地址--------getaddrinfo

    万次阅读 2012-07-24 15:26:10
    获取本地IP地址的方式很多,这里使用的接口是getaddrinfo(最开始发表时,这个地方表述有错误,这个接口也不能解决主机名为localhost,获取IP地址是127.0.0.1,但是可以通过修改/etc/hosts文件来绑定本地IP地址)...
  • Linux下修改主机名与ip的配置

    千次阅读 2017-11-15 11:29:09
    如果只是想修改临时ip的话只需要:ifconfig eth0 192.168.2.16 如果我们想改主机名字的话需要修改两个地方:vi /etc/sysconfig/network 和vi /etc/hosts 即可: NETWORKING=yes #启动时联网 HOSTNAME=cs #主机名称...
  • 一、局域网主机开机自动获取IP地址 安装好base base-devel后,默认开机是获取不了IP地址,需要启动dhcpcd服务 输入如下命令可开机自动获取IP地址: sudo systemctl enable dhcpcd 二、RP-PPPoE 拨号上网 1、...
  •  * 获取本机IP地址,并自动区分Windows还是Linux操作系统  * @return String  */  public static String getLocalIP(){  String sIP = "";  InetAddress ip = null;   try {  //如果是Windows操作系统  ...
  • Linux下获取本地IP地址--------ioctl

    千次阅读 2012-07-25 17:59:32
    即使本地的主机名是localhost,使用ioctl也可以轻松地获取局域网中的IP地址,而且不需要在/etc/hosts中绑定局域网IP。使用ioctl来获取本地局域网IP地址,需要首先创建一个套接字和一个struct ifreq结构(值-结果参数...
  • Linux下获取本地IP地址--------getifaddrs

    千次阅读 2013-06-08 23:26:25
    利用这个接口来获取本机的IP地址真是太方便了,原来的getaddrinfo()、ioctl()或者利用套接字方法等来获取IP地址的方法都没法跟这个接口比,不仅方便,而且也非常的强大,完全不需要绑定主机名等类似的操作。...
  • linux下获取自己的外网IP

    万次阅读 2019-06-19 14:40:37
    运用curl获取自己的外网IP curl icanhazip.com icanhazip.com 是一个神奇的网址,访问时会返回主机的外网访问ip,类似的网址还有如下: http://ip.3322.net myip.dnsomatic.com ip.appspot.com curl + 网址 ...
  • 在进行Linux网络编程时,经常用到本机IP地址。本文罗列一下常见方法,以备不时之需。获取本机IP地址,是一个相当灵活的操作,原因是网络地址的设置非常灵活而且都是允许用户进行个性化设置的。比如一台计算机上可以...
  • #获取网络中所有主机的MAC地址,把MAC地址输出到一个文件中(mac-list.txt) ip=$(ifconfig|grep "Bcast"|awk -F: '{print $2}'|awk '{print $1}'|cut -d. -f1,2,3) eth=$(ifconfig|grep eth|awk '{print $...
  • python 获取主机ip

    千次阅读 2011-08-02 13:02:25
    linux: import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM
  • Linux系统 C++ 获取网络接口,以及主机网关IP,完整的C++源码如下: #include //for in_addr #include //for rtnetlink 海姹网(网址:http://www.seacha.com),标签:Linux系统 C++ 获取网络接口,...
  • 虚拟机Linux自动获取IP地址

    万次阅读 2014-07-31 10:42:04
    主机IP获取方式是DHCP自动获取
  • linux获取hostname和获取ip

    千次阅读 2017-06-15 16:38:50
    1.获取hostname char host[MAX_HOST_NAME]; gethostname(host, MAX_HOST_NAME - 1); //Get host name string hostName(host);...2.获取ip #include #include #include #include #include #include int m
  • int IsLANIP(unsigned int nIP) ... // filter LAN IP's // ------------------------------------------- // 0.* // 10.0.0.0 - 10.255.255.255 class A // 172.16.0.0 - 172.31.255.255 class
  • linux下获取MAC地址,IP地址

    千次阅读 2014-02-18 12:36:52
    另外,在已知MAC,IP地址之一,去获取另外一个的方法,可以参考ARP, RARP协议 。   获取以太网卡的MAC地址 转自:http://www.cnblogs.com/guoyilin/archive/2009/04/01/1426846.htm

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,334
精华内容 55,733
关键字:

linux下获取主机ip

linux 订阅