linux 获取网卡的IP地址

下面这段代码的作用是根据传入的网卡名称获取相对应的本地IP地址,之前获取的本地网络地址老是127.0.0.1下面的获取的是正确的局域网地址
char* hostname_to_ip(char * ifaName ){
        struct ifaddrs *ifaddr, *ifa;
       int family, s;
       char host[NI_MAXHOST];
        std::string str;
       if (getifaddrs(&ifaddr) == -1)
       {
       //    perror("getifaddrs");
           //exit(EXIT_FAILURE);
       }

       for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next)
       {
           if (ifa->ifa_addr == NULL)
               continue;
           s=getnameinfo(ifa->ifa_addr,sizeof(struct sockaddr_in),host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);

           if((strcmp(ifa->ifa_name,ifaName)==0)&&(ifa->ifa_addr->sa_family==AF_INET))
           {
               if (s != 0)
               {
                 //  printf("getnameinfo() failed: %s\n", gai_strerror(s));
                   //exit(EXIT_FAILURE);
               }
               freeifaddrs(ifaddr);
                return host;
               //printf("\tInterface : <%s>\n",ifa->ifa_name );
               //printf("\t  Address : <%s>\n", host);
           }
       }
}
时间: 2024-10-19 15:12:26

linux 获取网卡的IP地址的相关文章

LINUX配置网卡的IP地址

1.修改IP地址:设置静态IP地址 #vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0BOOTPROTO=static   //BooTPROTO=yes 不能出现两种状态,否则会出错IPADDR=192.168.12.28 //添加IP地址NETMASK=255.255.255.0//掩码GATEWAY=192.168.12.1//添加网关 ONBOOT=yesTYPE=Ethernet 2.修改网关 #vi /etc/sysco

CentOS/Linux 网卡设置 IP地址配置永久生效

CentOS/Linux下设置IP地址 1.临时生效设置 1.1修改IP地址 #ifconfig eth0 192.168.100.100 1.2修改网关地址 #route add default gw 192.168.100.1 dev eth0 1.3修改DNS # echo "nameserver 8.8.8.8" >> /etc/resolv.conf 2.永久生效设置 2.1IP地址永久设置生效 # vi /etc/sysconfig/network-script

Linux编程获取本机IP地址

使用函数getifaddrs来枚举网卡IP,其中使用到的结构体如下所示: struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* Name of interface */ unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */ struct sockaddr *ifa_addr; /* Address of interface *

一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42609733 引言 使用场景: 我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中:另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址. 一般用法: 使用ifconfig eth0读取网卡信息 手动将IP地址或MA

Linux 获取本机IP、MAC地址用法大全

getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: C代码   struct ifaddrs { struct ifaddrs  *ifa_next;    /* Next item in list */ char            *ifa_name;    /* Name of interface */ unsigned int     ifa_flags;   /* Flags from SIOCGIFFLAGS */ struc

iphone开发之获取网卡的MAC地址和IP地址

本文转载至 http://blog.csdn.net/arthurchenjs/article/details/6358489 这是获取网卡的硬件地址的代码,如果无法编译通过,记得把下面的这几个头文件加上把. #include <sys/socket.h> // Per msqr#include <sys/sysctl.h>#include <net/if.h>#include <net/if_dl.h> #pragma mark MAC addy// Re

Py获取本机指定网卡的ip地址

前段时间需要批量修改服务器的配置文件,里面包含本机的IP地址,由于服务器有多块网卡并且配置多个ip地址,一开始想写shell脚本批量修改,但是既然现在正在学Python,何不研究下使用Python写,在网络上搜了相关文章,根据自己实际情况,便有了下面的脚本: 利用Python获取本机指定网卡的ip地址: #!/usr/bin/env python # -.- coding: utf-8 -.- # By Sandler import socket import fcntl import stru

Linux下获取本机IP地址的代码

Linux下获取本机IP地址的代码,返回值即为互联网标准点分格式的字符串. #define ETH_NAME "eth0" //获得本机IP地址 char* GetLocalAddress() { int sock; struct sockaddr_in sin; struct ifreq ifr; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1) { perror("socket"); return NU

Linux下 shell获取本机ip地址

方法二 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" 方法一 获取本机ip地址地址,并保存到变量中 arg=ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " " ipaddr=argechoipadd 这里假设你的 接