如何通过C语言获取主机WLAN下的IPv4地址,MAC地址
- #include "stdio.h"
- #include "windows.h"
- void GetHostWLAN_IPv4_AND_MAC(char IPv4[], char MAC[]); //获取WLAN下的IPv4和MAC地址,局域网网关IPv4地址(基于win10中文版编写)
- int main()
- {
- char IPv4[] = { };
- char MAC[] = { };
- GetHostWLAN_IPv4_AND_MAC(IPv4,MAC);
- printf("%s %d\n", IPv4, strlen(IPv4));
- printf("%s %d\n", MAC, strlen(MAC));
- return ;
- }
- void GetHostWLAN_IPv4_AND_MAC(char IPv4[],char MAC[])
- {
- memset(IPv4, , sizeof(IPv4));
- memset(MAC, , sizeof(MAC));
- system("ipconfig/all > E:\\ipconfig.txt");
- FILE *fp = fopen("E:\\ipconfig.txt", "r");
- if (!fp)
- {
- printf("failed to open file!");
- exit(-);
- }
- char strInfo[] = { };
- bool find_wlan = false;
- bool find_mac = false;
- bool find_ipv4 = false;
- int i, pos;
- while (fgets(strInfo, , fp) != NULL)
- {
- if (strstr(strInfo, "WLAN") != NULL)
- find_wlan = true;
- if (find_wlan)
- {
- if (strstr(strInfo, "物理地址") != NULL) //获取MAC地址
- {
- pos = ;
- for (i = strlen(strInfo);; i--)
- {
- if (strInfo[i - ] != '\0'&&pos >= )
- {
- if (strInfo[i - ] != '-')
- MAC[pos--] = strInfo[i - ];
- else
- MAC[pos--] = ':';
- }
- else
- {
- find_mac = true;
- break;
- }
- }
- }
- if (strstr(strInfo, "IPv4") != NULL) //获取IPv4地址
- {
- for (i = ;; i++)
- {
- if (strInfo[i] == ':')
- break;
- }
- pos = i+;
- for (i=;; i++,pos++)
- {
- if (strInfo[pos] != '\0'&&strInfo[pos] != '(')
- IPv4[i] = strInfo[pos];
- else
- {
- find_ipv4 = true;
- break;
- }
- }
- }
- }
- if (find_mac && find_ipv4 && find_gateway)
- break;
- memset(strInfo, , );
- }
- }
如何通过C语言获取主机WLAN下的IPv4地址,MAC地址的更多相关文章
- 虚拟机下linux迁移造成MAC地址异常处理办法
虚拟机下linux迁移造成MAC地址异常处理办法 Linux无法启用网卡:Device eth0 has different MAC address than expected,ignoring解决 ...
- C语言实现Windows下获取IP和MAC地址。
C语言实现Windows下获取IP和MAC地址. #include <winsock2.h> #include <stdio.h> #include <stdlib.h& ...
- Linux下修改网卡的mac地址
方法1: # ifconfig ethX down # ifconfig ethX hw ether NEW_MAC_ADDR # ifconfig ethX up 但是这样重启后就失效了,需要再敲一 ...
- 嵌入式 Linux下修改MAC地址
Linux下修改MAC地址 方法一: 1.关闭网卡设备ifconfig eth0 down2.修改MAC地址ifconfig eth0 hw ether MAC地址3.重启网卡ifconfig eth ...
- 通过mac地址确认二层交换机某个端口下接的终端设备IP
正常来说,二层交换机主要是通过mac地址进行通信的,这就导致我们无法直接通过arp表来确认交换机端口下终端设备的IP: 但我们仍然能通过查找二层交换机端口下学习到的mac地址,然后通过对照三层核心交换 ...
- VMware虚拟机在仅主机模式下的网卡无法动态获取IP
自己在VMware虚拟机中开启一台主机的时候,发现比以往的开机速度慢了好多,起初不以为然,直到用Xshell通过ssh远程连接eth1的ip地址才发现连接失败(这个ip是之前eth1正常的时候获取的i ...
- Linux系统下用C语言获取MAC地址
最近在做一个小程序,需要用到在linux系统里编写C程序从而获取MAC地址,从网上搜了一遍,想总结一下.如果你就只需要单个功能的程序,可以采用方法一,见代码1,一般最好能够封装起来,写成获取MAC地址 ...
- 查看局域网内所有的主机名、MAC地址和IP地址
查看所有 IP at MAC $ arp -a ? (10.125.49.187) at 18:81:e:eb:ef:c0 on en0 ifscope [ethernet] ? (10.125.50 ...
- Windows下查看局域网内某台计算机的MAC地址
我们知道在局域网中,在Windows下,查看局域网内其他主机的ip和对应mac地址的命令是: arp -a 这样可以看到ip和mac地址的对应关系,还是比较方便的 但是有些时候使用arp命令并不能列出 ...
随机推荐
- Matplotlib 基本概念
章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...
- 网络OSI七层模型及各层作用 与 TCP/IP
背景 虽然说以前学习计算机网络的时候,学过了,但为了更好地学习一些物联网协议(MQTT.CoAP.LWM2M.OPC),需要重新复习一下. OSI七层模型 七层模型,亦称OSI(Open System ...
- uni-app小程序组建
(1)新建组建:编辑器右击 新建组建 (2)传值 <template> <view class="myRankingList"> <block v-f ...
- windows编程-socket
server部分 ,Initialize Winsock. ,Create a socket. ,Bind the socket. ,Listen on the socket for a client ...
- OpenJ_Bailian - 1088 滑雪(记忆化搜索)
题意:给定一个二维数组,一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小,输出可以滑行的最长区域的长度. 分析:对于每一个点,进行记忆化搜索.若某点可以向四周某几个点滑行,记忆化搜索求出 ...
- Nginx配置的一些说明(添加https证书)
server { listen 443 ssl; #监听https 443端口 server_name www.XXXX.com; client_max_body_size 260M; #这下面的就是 ...
- python merge、join、concat用法与区别
由于合并变化较大,以后函数可能会修改,只给出一些例子作为参考 总结: merge.join 1.当没有索引时:merge.join为按照一定条件合并 2.当有索引.并按照索引合并时,得到结果为两者混 ...
- 单片机ADC检测4-20mA电路,以及计算方法
单片机ADC检测4-20mA电路,以及计算方法 转载:https://www.hongchangzidonghua.com/?id=24 1,手里有一个4-20mA输出的压力传感器,假设测量范围是0M ...
- 第3节 sqoop:7、通过java代码远程连接linux执行shell命令
数据库的数据同步软件sqoop 数据同步 关系型数据库到大数据平台 任务:sqoop 是批量导入数据太慢,如何做到实时的数据同步 实时的数据同步工具: canal 阿里开源的一个数据库数据实时同步的软 ...
- XV6源代码阅读-虚拟内存管理
Exercise1 源代码阅读 1.内存管理部分: kalloc.c vm.c 以及相关其他文件代码 kalloc.c:char * kalloc(void)负责在需要的时候为用户空间.内核栈.页表页 ...