码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 编程获取本机所有网卡和IP

时间:2017-12-06 15:14:43      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:socket   netmask   span   fail   errno.h   ext   style   color   clu   

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <ifaddrs.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
 
int main()
{
  struct ifaddrs* ifaddr = NULL;
  int ret = getifaddrs(&ifaddr);

  if (ret) {
    printf("getifaddrs failed, errno:%d\n", errno);
    return 1;
  }
  
  struct ifaddrs* ifp = ifaddr;
  char ip[16];
  char netmask[16];

  for ( ; ifp != NULL; ifp = ifp->ifa_next) {
    if (ifp->ifa_addr && ifp->ifa_addr->sa_family == AF_INET) {
      strncpy(ip, inet_ntoa(((struct sockaddr_in*)ifp->ifa_addr)->sin_addr), 16);
      strncpy(netmask, inet_ntoa(((struct sockaddr_in*)ifp->ifa_netmask)->sin_addr), 16);
      printf("dev:%s, ip:%s, netmask:%s\n", ifp->ifa_name, ip, netmask);
    }
  }
 
  freeifaddrs(ifaddr);
  return 0;
}

 

Linux 编程获取本机所有网卡和IP

标签:socket   netmask   span   fail   errno.h   ext   style   color   clu   

原文地址:http://www.cnblogs.com/lausaa/p/7992692.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!