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

#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;
}
时间: 2024-11-05 21:34:57

Linux 编程获取本机所有网卡和IP的相关文章

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 *

linux编程获取本机网络相关参数

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

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

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

Python获取本机所有网卡ip,掩码和广播地址

搜了一天,竟然没找到一段合适的代码来获取机器中所有网卡的ip,掩码和广播地址,大部分都是用socket,但是socket通常返回的要不就是内网地址,要不就是公网地址,不能够找到所有地址,真的太忧桑了,决定自己通过ifconfig或ipconfig的返回信息,一步步地过滤了.这次的代码主要用到了正则表达式和subprocess模块,而且为了兼容所有平台(win,linux和mac),也用到了platform来判断系统类型,不说太多,代码如下: import subprocess import re

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

js获取本机mac地址,IP地址,计算机名

<!DOCTYPE HTML> <html> <head> <title>js获取本机mac地址,IP地址,计算机名</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta content="MSHTML 6.00.2800.1106" name="

node 获取本机主机名和ip

/**获取本机ip**/function getIPAdress(){    var interfaces = require('os').networkInterfaces();    for(var devName in interfaces){        var iface = interfaces[devName];        for(var i=0;i<iface.length;i++){            var alias = iface[i];           

获取本机的内外网ip

package tool; import java.net.InetAddress;import java.net.UnknownHostException; /** * @description * @author: 123.com * @create: 2019-01-17 17:34:52 **/ public class GetIp { public static void getip() { try { InetAddress address = InetAddress.getLoca

Linux编程获取本地IP

1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <ifaddrs.h> 4 #include <netinet/in.h> 5 #include <string.h> 6 #include <stdlib.h> 7 #include <arpa/inet.h> 8 9 10 //获取本地IP地址 11 char *getIP() 12 { 13 int so