精华内容
下载资源
问答
  • linux c 获取本机ip地址

    千次阅读 2018-11-07 16:10:44
    #include #include #include #include #include #include #include #include ...int main(int argc,char *argv[]) ... printf("ip: %s \n",ipbuf); ifr = ifr +1; } return 0; }  
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <string.h>
    #include <net/if.h>
    #include <sys/ioctl.h>
    
    int main(int argc,char *argv[])
    {
    	int i=0;
    	int sockfd;
    	struct ifconf ifc;
    	char buf[1024]={0};
    	char ipbuf[20]={0};
    	struct ifreq *ifr;
    
    	ifc.ifc_len = 1024;
    	ifc.ifc_buf = buf;
    
    	if((sockfd = socket(AF_INET, SOCK_DGRAM,0))<0)
    	{
    	    printf("socket error\n");
    		return -1;
    	}
    	ioctl(sockfd,SIOCGIFCONF, &ifc);
    	ifr = (struct ifreq*)buf;
    
    	for(i=(ifc.ifc_len/sizeof(struct ifreq)); i > 0; i--)
    	{
    		printf("net name: %s\n",ifr->ifr_name);
    		inet_ntop(AF_INET,&((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr,ipbuf,20);
    		printf("ip: %s \n",ipbuf);
    		ifr = ifr +1;
    	}
    	return 0;
    }

     

    展开全文
  • linux获取本机ip地址

    千次阅读 2018-08-27 10:18:30
    我们在编程时常常需要获取本机ip地址linux下提供了很多中不同的方法。 1.命令行下 ifconfig eth0:表示网卡0 lo:loopback地址,表示本地localhost。 2.通过程序来获取ip地址 #include <iostream> #...

    我们在编程时常常需要获取本机的ip地址。linux下提供了很多中不同的方法。

    1.命令行下 ifconfig

    eth0:表示网卡0

    lo:loopback地址,表示本地localhost。

    2.通过程序来获取ip地址

    #include <iostream>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <ifaddrs.h>
    #include <netdb.h>
    #include <unistd.h>
    #include <arpa/inet.h>
    int main(int argc, const char * argv[]) {
        struct ifaddrs *addr = NULL;
        struct ifaddrs *temp_addr = NULL;
        int ret = 0;
        ret = getifaddrs(&addr);
        if (ret == 0) {
            temp_addr = addr;
            while(temp_addr != NULL) {
                if(temp_addr->ifa_addr->sa_family == AF_INET) {
                    if(strcmp(temp_addr->ifa_name, "en0")  == 0) {
                        printf("ip = %s\n",inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr));
                    }
                }
                temp_addr = temp_addr->ifa_next;
            }
        }
        freeifaddrs(addr);
    }

    这个例子是获得网卡0的ipv4地址,这个地址一般就是我们和外界通信的ip地址。因为本机是mac下的,所以网卡名字为en0。如果为linux下,则网卡名字为eth0。其实这个网卡名字可以自己改变,通过ifconfig来查看。

    3.获取本机的所有ip地址

    参照man手册中的例子

    #include <arpa/inet.h>
    #include <sys/socket.h>
    #include <netdb.h>
    #include <ifaddrs.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[])
    {
        struct ifaddrs *ifaddr, *ifa;
        int family, s;
        char host[NI_MAXHOST];
    
        if (getifaddrs(&ifaddr) == -1) {    //通过getifaddrs函数得到所有网卡信息
            perror("getifaddrs");            //通过struct ifaddr结构体由指针,将所有信息通过链表连接
            exit(EXIT_FAILURE);
        }
    
        for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {    //做链表做循环
            if (ifa->ifa_addr == NULL)                            //判断地址是否为空
                continue;
    
            family = ifa->ifa_addr->sa_family;                    //得到IP地址的协议族
    
            printf("%s  address family: %d%s\n",                    
                    ifa->ifa_name, family,
                    (family == AF_PACKET) ? " (AF_PACKET)" :    //将得到的协议族打印
                    (family == AF_INET) ?  " (AF_INET)" :
                    (family == AF_INET6) ?  " (AF_INET6)" : "");
    
            if (family == AF_INET || family == AF_INET6) {    //判断协议族是AF_INET还是AF_INET6
            //通过getnameinfo函数得到对应的IP地址。NI_MAXHOST为宏定义,值为1025. NI_NUMERICHOST宏定义,和NI_NUMERICSERV对应,都试一下就知道了。
                s = getnameinfo(ifa->ifa_addr,
                        (family == AF_INET) ? sizeof(struct sockaddr_in) :
                        sizeof(struct sockaddr_in6),
                        host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
                if (s != 0) {
                    printf("getnameinfo() failed: %s\n", gai_strerror(s));
                    exit(EXIT_FAILURE);
                }
                printf("\taddress: <%s>\n", host);
            }
        }
    
        freeifaddrs(ifaddr);
        exit(EXIT_SUCCESS);
    }

    第2个例子是第三个例子中的一个特例。两个例子用到了不同函数。

    展开全文
  • linux 获取本机 ip 地址

    2016-04-02 18:10:06
    linux 获取本机 ip 地址

    linux 获取本机 ip 地址

    ifconfig | grep inet | grep -v '127.0.0.1' | grep -v inet6 | cut -d: -f2 | awk '{print $1}'

    分解下上面的命令组合

    • ifconfig
    eth0      Link encap:Ethernet  HWaddr f0:de:f1:d8:19:f6  
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
              Interrupt:20 Memory:f2500000-f2520000 
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:32486 errors:0 dropped:0 overruns:0 frame:0
              TX packets:32486 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1 
              RX bytes:22767938 (22.7 MB)  TX bytes:22767938 (22.7 MB)
    
    wlan0     Link encap:Ethernet  HWaddr 24:77:03:28:ab:0c  
              inet addr:192.168.1.105  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::2677:3ff:fe28:ab0c/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:83327 errors:0 dropped:0 overruns:0 frame:0
              TX packets:82573 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:75036136 (75.0 MB)  TX bytes:19201767 (19.2 MB)
    • ifconfig | grep inet
    inet addr:127.0.0.1  Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    inet addr:192.168.1.105  Bcast:192.168.1.255  Mask:255.255.255.0
    inet6 addr: fe80::2677:3ff:fe28:ab0c/64 Scope:Link
    • ifconfig | grep inet | grep -v inet6
    inet addr:127.0.0.1  Mask:255.0.0.0
    inet addr:192.168.1.105  Bcast:192.168.1.255  Mask:255.255.255.0
    • ifconfig | grep inet | grep -v inet6 | grep -v '127.0.0.1'
    inet addr:192.168.1.105  Bcast:192.168.1.255  Mask:255.255.255.0
    • ifconfig | grep inet | grep -v inet6 | grep -v '127.0.0.1' | cut -d: -f2
    192.168.1.105  Bcast
    • ifconfig | grep inet | grep -v inet6 | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}'
    192.168.1.105
    展开全文
  • linux c获取本机网卡ip地址

    千次阅读 2012-10-10 19:14:56
    获取本机网卡绑定的IPv4地址。 int GetLoalIP(vector& local_addr){ int ret = ErrorCode::Success; local_addr.clear(); ifaddrs* ifap; if(getifaddrs(&ifap) == -1){ return ErrorCode::Syste

    获取本机网卡绑定的IPv4地址。

    int GetLoalIP(vector<char*>& local_addr){
        int ret = ErrorCode::Success;
    
        local_addr.clear();
        
        ifaddrs* ifap;
        if(getifaddrs(&ifap) == -1){
            return ErrorCode::SystemRetrieveLocalIPError;
        }
    
        ifaddrs* p = ifap;
        while(p != NULL){
            sockaddr* addr = p->ifa_addr;
            
            // retrieve ipv4 addr
            if(addr->sa_family == AF_INET){
                in_addr* inaddr = &((sockaddr_in*)addr)->sin_addr;
                
                char buf[16];
                memset(buf, 0, sizeof(buf));
                
                if((inet_ntop(addr->sa_family, inaddr, buf, sizeof(buf))) == NULL){
                    Fatal("convert local ip failed, errno=%d(%#x)", errno, errno);
                    ret = ErrorCode::SystemRetrieveLocalIPError;
                    break;
                }
    
                int size = strlen(buf);
                char* heap_buf = new char[size + 1];
                memcpy(heap_buf, buf, size + 1);
                local_addr.push_back(heap_buf);
            }
            
            p = p->ifa_next;
        }
    
        freeifaddrs(ifap);
    
        if(ret != ErrorCode::Success){
            return ret;
        }
    
        if(local_addr.size() == 0){
            return ErrorCode::SystemRetrieveLocalIPError;
        }
        Trace("retrieve local ip success!");
        
        return ret;
    }
    
    展开全文
  • linux编程获取本机IP地址的三种方法

    千次阅读 2019-01-10 12:39:19
    linux编程获取本机IP地址的三种方法
  • ***转载自http://blog.163.com/lijm1989@yeah/blog/static/17147890320146206624469/
  • linux编程获取本机IP地址

    万次阅读 2012-04-23 14:56:08
    getifaddrs()和struct ifaddrs的使用,获取本机IP 博客分类:  Linux C编程  ifaddrs结构体定义如下: C代码  struct ifaddrs  {   struct ifaddrs *ifa_next; /* Next...
  • Linux编程获取本机IP地址的几种方法

    万次阅读 2019-05-08 09:16:47
    在进行Linux网络编程时,经常会需要获取本机IP地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。 方法一:使用ioctl()获取本地IP地址 Linux下可以使用ioctl()函数...
  • 获取本机ip地址地址,并保存到变量中 arg=`ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " "` ipaddr=$arg echo $ipadd cut参数简介 -d用来定义分隔符,默认为tab键
  • linux获取本机ip地址,ipv4和ipv6

    千次阅读 2013-12-25 22:52:25
    linux获取本机ip地址,ipv4和ipv6#include #include #include #include #include #include #include #include int GetIP_v4_and_v6_linux(int family, char *address, int size) { struct ifaddrs *ifap0,...
  • 1、linux c代码实现 代码如下:#include <netdb>#include <stdio> #include <stdlib>#include <string>#include <unistd>#include <arpa>#include <netinet>#include <sys>typedef enum {false,true}bool;int main() ...
  • linux c 获取本机所有IP

    千次阅读 2012-08-20 13:28:40
    经常需要获取本机ip地址, 通常的 gethostname和gethostbyname 经常只返回 "127.0.0.1", 这里提供一个返回 "ip1, ip2, ..." 格式的接口. #include #include #include #include #include #include #...
  • linux下c语言获取本机ip地址

    千次阅读 2015-04-21 15:23:43
    linux下c语言获取本机ip地址     struct ifconf这个结构是在哪个头文件定义 #include 其实你可以 find /usr/include/ -name "*.h" -exec grep -l "ifconf" {} \;  ( grep -l或--file-with-matches ...
  • Linux下Java获取本机IP地址

    千次阅读 2016-03-31 15:29:27
    Linux下用InetAddress.getLocalHost()方法获取本机IP地址, 得到的结果总是:127.0.0.1。 原来这个是etc/hosts文件中的配置,并非网卡的IP地址。 后来多方寻访,终于得下以下代码, 运行后在控制台输出
  • linux获取本机ip地址和掩码地址

    千次阅读 2009-08-28 14:43:00
    //取本机IP地址 if(ioctl(sock, SIOCGIFADDR, &ifr) ) {  return -1; } my_ip->sin_addr = ((struct sockaddr_in *)(&ifr.ifr_addr))->sin_addr; local_ip = inet_ntoa(my_ip->sin_addr); printf(" local_ip is ...
  • linux C 获取与修改IP地址

    千次阅读 2012-01-15 09:10:35
    //setip.h #ifndef _INCLUDE_SETIP_H_ #define _INCLUDE_SETIP_H_     //设置IP地址 ...* 函数名称 : int setip(char *...* char *ip :设置的IP地址,以点分十进制的字符串方式表示,如“192.168.0.5” * 返 回
  • Linux下 shell获取本机ip地址

    万次阅读 2015-06-04 16:30:52
    方法二 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2...获取本机ip地址地址,并保存到变量中 arg=ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " " ipaddr=arge
  • Linux C获取及设置系统IP地址

    千次阅读 2017-02-28 10:50:39
    Linux C获取系统IP地址
  • Linux C获取本地IP地址源代码(当然排除127.0.0.1),编译通过,测试成功。
  • Linux下C语言获取本机IP地址

    千次阅读 2018-09-21 13:10:14
    #include &lt;sys/ioctl.h&gt; #include &lt;net/if.h&gt; ... char* GetLocalIp() { int MAXINTERFACES=16; char *ip = NULL; int fd, intrface...
  • LinuxC编程实现---获取本机IP地址

    千次阅读 2016-04-05 09:28:00
    LINUX下,如果需要获取本机IP地址,需要用到以下一个结构体,该结构体在/usr/include/net/if.h文件中struct ifreq { # define IFHWADDRLEN 6 # define IFNAMSIZ IF_NAMESIZE union { char ifrn_name...
  • linux c函数获取系统IP地址

    千次阅读 2018-12-21 11:58:46
    一,通过分析/etc/hosts文件里映射关系获取ip地址。 #include &lt;stdio.h&gt; #include &lt;netdb.h&gt; int main() {  struct hostent *he;  char hostname[20] = {0};  gethostname(hostname...
  • linux获取本机IP地址问题(live555)

    千次阅读 2012-05-02 18:09:53
    1.问题 :今天在一台服务器上安装live555,运行结果如下:   出现ip地址为:0.0.0.0 2.最后问题所在: 以后要注意一点就是:别从别人身上找问题,应该从自己身上...3.linux获取本机IP地址的方法 转发与:http://
  • linux下c语言获取本机ip地址源代码

    千次阅读 2014-11-14 10:38:32
    getip.c - 在linux下c语言获取本机ip地址源代码 rhel5.4-i386 bash-3.2-24.el5.src.rpm http://oss.oracle.com/el5/SRPMS-updates/  订阅 struct ifconf这个结构是在哪个头文件定义 #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,495
精华内容 70,198
关键字:

linuxc获取本机ip地址

linux 订阅