[记]Linux 获取本机(全部)IP、MAC地址方法 (C/C++)

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

 1
 2 //#include <sys/types.h>
 3 #include <ifaddrs.h>
 4 #include <sys/ioctl.h>
 5 #include <net/if.h>
 6 #include <string.h>
 7 #include <stdio.h>
 8 #include <unistd.h>
 9 #include <netdb.h>
10 //#include <sys/socket.h>
11 //#include <netinet/in.h>
12 #include <arpa/inet.h>
13
14 char* getMac(char* mac,char* dv){
15     struct   ifreq   ifreq;
16     int   sock;
17     if(!mac || !dv)
18         return mac;
19     if((sock=socket(AF_INET,SOCK_STREAM,0)) <0)
20     {
21         perror( "socket ");
22         return mac;
23     }
24     strcpy(ifreq.ifr_name,dv);
25     if(ioctl(sock,SIOCGIFHWADDR,&ifreq) <0)
26     {
27         perror( "ioctl ");
28         return mac;
29     } close(sock);
30     sprintf(mac, "%02x:%02x:%02x:%02x:%02x:%02x",
31            (unsigned char)ifreq.ifr_hwaddr.sa_data[0],
32            (unsigned char)ifreq.ifr_hwaddr.sa_data[1],
33            (unsigned char)ifreq.ifr_hwaddr.sa_data[2],
34            (unsigned char)ifreq.ifr_hwaddr.sa_data[3],
35            (unsigned char)ifreq.ifr_hwaddr.sa_data[4],
36            (unsigned char)ifreq.ifr_hwaddr.sa_data[5]);
37     return mac;
38 }
39
40 int main (int argc, const char * argv[])
41 {
42     char hname[128];
43     struct hostent *hent;
44     int i;
45
46     gethostname(hname, sizeof(hname));
47
48     //hent = gethostent();
49     hent = gethostbyname(hname);
50
51     printf("hostname: %s\n", hent->h_name);
52
53 //----------------------------------------------------------
54     printf("\n\n\n");
55
56     char mac[30];
57     struct ifaddrs * ifAddrStruct=NULL;
58     void * tmpAddrPtr=NULL;
59
60     getifaddrs(&ifAddrStruct);
61
62     while (ifAddrStruct!=NULL) {
63         if (ifAddrStruct->ifa_addr->sa_family==AF_INET) { // check it is IP4
64             // is a valid IP4 Address
65             tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
66             char addressBuffer[INET_ADDRSTRLEN];
67             inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
68             printf("%s IP: %s\n", ifAddrStruct->ifa_name, addressBuffer);
69             printf("MAC: %s\n\n",getMac(mac,ifAddrStruct->ifa_name));
70         } else if (ifAddrStruct->ifa_addr->sa_family==AF_INET6) { // check it is IP6
71             // is a valid IP6 Address
72             tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
73             char addressBuffer[INET6_ADDRSTRLEN];
74             inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
75             printf("%s IP: %s\n", ifAddrStruct->ifa_name, addressBuffer);
76             printf("MAC: %s\n\n",getMac(mac,ifAddrStruct->ifa_name));
77         }
78         ifAddrStruct=ifAddrStruct->ifa_next;
79     }
80     return 0;
81
82 } 

再次做个笔记

(更多参考:Linux 获取本机IP、MAC地址用法大全)

时间: 2024-11-10 07:56:55

[记]Linux 获取本机(全部)IP、MAC地址方法 (C/C++)的相关文章

c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存. 首先需要引入命名空间: using System.Management; /// 操作系统的登录用户名: string GetUserName() { try { string st = ""; ManagementClass mc = new ManagementCla

C#获取本地计算机名,IP,MAC地址,硬盘ID

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebPa

linux通过Python获取本机的ip,mac,网关,子网掩码,网卡名

1.通过模块netifaces获取,当系统为Windows时,可能会有报错现象 import os import sys try: import netifaces except ImportError: try: command_to_execute = "pip install netifaces || easy_install netifaces" os.system(command_to_execute) except OSError: print "Can NOT

linux 获取本机MAC/IP地址的方法

功能:查询本机IP/MAC地址,过滤掉127.0.0.1 loop-back 地址 适用:linux, ubuntu 16.04 调试通过 #include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#includ

获取本机的IP地址和mac地址

1. 以前一直用ipconfig来查看ip地址,哈哈哈,现在发现挺好玩 #获取本机的IP地址和mac地址 import uuid import socket def get_mac_address(): mac=uuid.UUID(int = uuid.getnode()).hex[-12:] #print(mac) return ":".join([mac[e:e+2] for e in range(0,11,2)]) #range(0,11,2):在[0:11]取值,间隔为2 de

C#获取IP及MAC地址 方法

C#获取IP及MAC地址 方法,比较齐全 using System.Net; using System; using System.Management; using System.Runtime.InteropServices; public class getIP { [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int

【Win 10 应用开发】获取本机的IP地址

按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至于电话费嘛,基本上是交月租,通话费用可能平均不到1块钱,多的可能就几块钱.老周的单次通话时间一般不会长,长达半小时的通话也是偶然发生,多数情况下就说几句话而已,别说废话,长话短说,说完挂机. 有人会问,那如果要多聊一会儿呢,那就开聊天工具,聊语音.反正用的是光纤包年,多说几句废话也不花钱. 该省的钱

获取本机的IP地址(局域网)与主机名称

编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ echo "please wait" for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b echo %fsip% set CT=%computerna

python基础项目实战:获取本机所有IP地址的方法

前言 今天为大家介绍一个利用python获取本机所有IP地址的具体代码,具有一定的参考价值,希望能够帮助到大家,代码如下: 导入第三方库 查看主机名 主机IP 大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发.爬虫.django.数据挖掘等,零基础到项目实战的资料都有整理.送给每一位python的小伙