ioctl()函数获取本机ip,mask,mac
来源:互联网 发布:软件系统集成设计方案 编辑:程序博客网 时间:2024/04/30 20:01
重点内容
函数 : ioctl(int fd, int request, void * arg)
1 #include<stdio.h> 2 #include <sys/socket.h> 3 #include <arpa/inet.h> 4 #include <string.h> 5 #include <sys/ioctl.h> 6 #include <net/if.h> 7 8 int main(int argc,char**argv) 9 { int i; 10 char mac[32]; 11 int sock; 12 int res; 13 struct ifreq ifr; 14 struct sockaddr_in *addr; 15 char *address; 16/*struct ifreq 就是用来存储返回的接口相关信息的结构体,由于电脑可能有多个硬件接口,因此我们使用指针来存储返回的结构体数组。struct sockaddr_in变量是用来存储ioctl()函数返回结果,也就是mac地址,ip地址,子网掩码的相关信息。*/ 17 sock = socket(AF_INET, SOCK_STREAM, 0); /*流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用*/ 18 strcpy(ifr.ifr_name, "eth3"); 19 res = ioctl(sock, SIOCGIFADDR, &ifr); /*获取网络接口地址ip*/ 20 addr=(struct sockaddr_in*)&(ifr.ifr_addr); 21 address=inet_ntoa(addr->sin_addr); 22 23 printf("IP: %s\n",address);/*inet_ntoa()的作用是ip地址格式转换,转换为计算机识别的二进制格式*/ 24 /* get ip address*/ 25 26 27 res =ioctl(sock,SIOCGIFHWADDR,&ifr);/*获取MAC地址*/ 28 for(i = 0; i < 6; ++i) 29 { 30 sprintf(mac + 3*i, "%02x:", (unsigned char)ifr.ifr_hwaddr.sa_data[i]); 31 } 32 printf("MAC: %s\n",mac); 33 34 35 res =ioctl(sock,SIOCGIFNETMASK,&ifr);/*获取子网掩码*/ 36 addr = (struct sockaddr_in *)&(ifr.ifr_addr); 37 address = inet_ntoa(addr->sin_addr); 38 39 printf("Mask: %s\n",address); 40 41 return 0; 42 43 44 }
测试结果:
strcpy和memcpy的区别:
http://www.codeweblog.com/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3strcpy%E4%B8%8Ememcpy%E7%9A%84%E5%8C%BA%E5%88%AB/
0 0
- ioctl()函数获取本机ip,mask,mac
- ioctl()函数获取本机IP、MAC
- ioctl()函数获取本机IP、MAC
- linux ioctl函数获取本机IP
- linux 利用ioctl函数获取IP地址、子网掩码、MAC地址和修改本机IP地址、子网掩码、网关
- linux下使用ioctl() 获取本机mac地址、ip地址等等
- 得到本机的MAC,IP, MASK地址
- 获取本机IP/MAC
- ioctl()函数的简单使用——获取本机的IP、掩码、HWaddr
- 利用ioctl获取本机指定设备的MAC地址
- ioctl 获取本机网卡ip地址 | socket()
- ioctl 获取本机网卡ip地址 | socket() 复制代码
- 获取本机ip及mac地址
- Android 获取本机Ip 和 Mac
- 获取本机IP、MAC地址、CPUID
- C# 获取本机IP MAC地址
- Android 获取本机IP、Mac、名称
- ioctl获取本地IP和MAC地址
- hdu5632 Rikka with Array 数位dp
- Codeforces Round #402 (Div. 2) (A-D)
- Mybatis入门案例
- 传说中的回调函数练习,也就是指针的深入理解
- 《牛客网剑指offer39题》输入一棵二叉树,判断该二叉树是否是平衡二叉树
- ioctl()函数获取本机ip,mask,mac
- android HTTPURLConnection解决不能访问HTTPs请求
- 【没有assembly目录】spark2.0.0启动时无法访问spark-assembly-*.jar的解决办法
- Linux 磁盘IO性能测试工具:FIO
- 指针的引用
- 欢迎使用CSDN-markdown编辑器
- 关于win10无法正常关机
- HDU1232 畅通工程
- java中的内部类总结