如何通过C语言获取主机WLAN下的IPv4地址,MAC地址,局域网网关IPv4地址

  1 #include "stdio.h"
  2 #include "windows.h"
  3
  4 void GetHostWLAN_IPv4_AND_MAC(char IPv4[], char MAC[],char GateWay[]); //获取WLAN下的IPv4和MAC地址,局域网网关IPv4地址(基于win10中文版编写)
  5
  6 int main()
  7 {
  8     char IPv4[16] = { 0 };
  9     char MAC[18] = { 0 };
 10     char Gway[16] = { 0 };
 11     GetHostWLAN_IPv4_AND_MAC(IPv4,MAC,Gway);
 12     printf("%s %d\n", Gway,strlen(Gway));
 13     printf("%s %d\n", IPv4, strlen(IPv4));
 14     printf("%s %d\n", MAC, strlen(MAC));
 15     return 0;
 16 }
 17
 18 void GetHostWLAN_IPv4_AND_MAC(char IPv4[],char MAC[],char GateWay[])
 19 {
 20     memset(IPv4, 0, sizeof(IPv4));
 21     memset(MAC, 0, sizeof(MAC));
 22     system("ipconfig/all > E:\\ipconfig.txt");
 23     FILE *fp = fopen("E:\\ipconfig.txt", "r");
 24     if (!fp)
 25     {
 26         printf("failed to open file!");
 27         exit(-1);
 28     }
 29     char strInfo[128] = { 0 };
 30     bool find_wlan = false;
 31     bool find_mac = false;
 32     bool find_ipv4 = false;
 33     bool find_gateway = false;
 34     int i, pos;
 35     while (fgets(strInfo, 128, fp) != NULL)
 36     {
 37         if (strstr(strInfo, "WLAN") != NULL)
 38             find_wlan = true;
 39
 40         if (find_wlan)
 41         {
 42             if (strstr(strInfo, "物理地址") != NULL) //获取MAC地址
 43             {
 44                 pos = 16;
 45                 for (i = strlen(strInfo);; i--)
 46                 {
 47                     if (strInfo[i - 2] != ‘\0‘&&pos >= 0)
 48                     {
 49                         if (strInfo[i - 2] != ‘-‘)
 50                             MAC[pos--] = strInfo[i - 2];
 51                         else
 52                             MAC[pos--] = ‘:‘;
 53                     }
 54                     else
 55                     {
 56                         find_mac = true;
 57                         break;
 58                     }
 59                 }
 60             }
 61
 62             if (strstr(strInfo, "IPv4") != NULL) //获取IPv4地址
 63             {
 64                 for (i = 10;; i++)
 65                 {
 66                     if (strInfo[i] == ‘:‘)
 67                         break;
 68                 }
 69                 pos = i+2;
 70                 for (i=0;; i++,pos++)
 71                 {
 72                     if (strInfo[pos] != ‘\0‘&&strInfo[pos] != ‘(‘)
 73                         IPv4[i] = strInfo[pos];
 74                     else
 75                     {
 76                         find_ipv4 = true;
 77                         break;
 78                     }
 79                 }
 80             }
 81
 82             if (strstr(strInfo, "默认网关") != NULL) //获取默认网关IPv4地址
 83             {
 84                 memset(strInfo, 0, 128);
 85                 fgets(strInfo, 128, fp); //获取下一行
 86                 for (i = 0,pos = 0;; pos++)
 87                 {
 88                     if (strInfo[pos] == ‘\n‘)
 89                     {
 90                         find_gateway = true;
 91                         break;
 92                     }
 93                     if (strInfo[pos]>=‘0‘&&strInfo[pos]<=‘9‘ || strInfo[pos]==‘.‘)
 94                         GateWay[i++] = strInfo[pos];
 95                 }
 96             }
 97
 98         }
 99         if (find_mac && find_ipv4 && find_gateway)
100             break;
101         memset(strInfo, 0, 128);
102     }
103 }

原文地址:https://www.cnblogs.com/lyj-blogs/p/11739828.html

时间: 2024-10-08 10:19:21

如何通过C语言获取主机WLAN下的IPv4地址,MAC地址,局域网网关IPv4地址的相关文章

仅主机模式下vmware虚拟机中win7如何使宿主机与寄生机网络互联互通

实验环境:仅主机模式下vmware虚拟机中win7如何使宿主机与寄生机网络互联互通. 需求:VMware Workstation12 Pro或以上版本,并已安装一个win7系统. ----------------下为连接宿主机与寄生机网络的步骤------------- 1主机中打开控制面板-网络和INTERNET-网络和共享中心,并点击更改适配器设置. 2在网络连接里双击VMware Network Adapter VMnet1. 3在VMware Network Adapter VMnet1

Ubuntu下使用VirtualBox安装Mac OS X Mavericks(10.9)下篇

关闭 Mac OS X Mavericks 虚拟机后, 在设置的 Storage -> Storage Type  Controller SATA 属性 退出 OSXMavericks2.iso. 点击下面的那个删除按钮,就会弹出上图所示的对话框,点击remove即可. 然后CD / DVD Drive 的光盘图标 Add CD/DVD Drive 选择 HackBoot_Mav.iso 文件.类似上篇时介绍的那样.添加好后如下图: 启动Mac OS X Mavericks虚拟机.在引导盘的引导

虚拟机下linux迁移造成MAC地址异常处理办法

虚拟机下linux迁移造成MAC地址异常处理办法 Linux无法启用网卡:Device eth0 has different MAC address than expected,ignoring解决 遇到这样一个错误: 在linux上面, 无法成功启动网卡, 当我们Activate一个网卡的时候, 提示下面的错误. Cannot activate network device eth0! Device eth0 has different MAC address than expected, i

FEKO 6.0 电磁仿真软件在 Linux下安装以及破解详细步骤(附下载地址和注册程序)

FEKO6.0各版本下载地址(来源于寺院的研究僧): Intel/AMD (32-bit x86) Windows (XP, Vista, Windows 7, Server 2003) feko_distrib_6.0_win32.exe (320 MByte) Linux feko_distrib_6.0_LINUX.tar.gz (392 MByte) Intel/AMD (64-bit x86_64) Windows (XP, Vista, Windows 7, Server 2003,

在不划分vlan的情况下,实现两个网段的ip地址互通

简介: 在不配置vlan的情况下,实现两个网段的ip地址互通 配置命令 PC1和PC2配置好ip地址和网关的ip地址 在R1路由器的F0/0配置ip地址为192.168.10.1 255.255.255.0F0/1配置ip地址为192.168.20.1 255.255.255.0 Router>enable Router#config terminal Router(config)#hostname R1 R1(config)#interface fastEthernet 0/0 R1(conf

adb指令没有数据线,在WLAN下也可使用

参考链接地址: https://developer.android.com/studio/command-line/adb 一般情况下,通过 USB 使用 adb.不过,也可以按照下面的说明通过 WLAN 使用它. 将 Android 设备和 adb 主计算机连接到这两者都可以访问的常用 WLAN 网络.请注意,并非所有访问点均适用:您可能需要使用已正确配置防火墙的访问点以支持 adb 的访问点. 注:如果您尝试连接到 Android Wear 设备,则通过关闭与其连接的手机的蓝牙强制将它连接到

VMware虚拟机在仅主机模式下的网卡无法动态获取IP

自己在VMware虚拟机中开启一台主机的时候,发现比以往的开机速度慢了好多,起初不以为然,直到用Xshell通过ssh远程连接eth1的ip地址才发现连接失败(这个ip是之前eth1正常的时候获取的ip地址),后来用ifconfig命令发现eth1这个网卡并没有获取IP地址,eth1这个网卡设置的仅主机模式,并通过宿主机的VMware dhcp服务获取ip地址.发现了eth1网卡异常之后,重启network服务,发现eth1还是获取不到ip,效果图如下.随后重温了一下dhcp的工作原理,大致流程

虚拟机CentOS复制到其他主机vm下IP地址无效(Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization)

Bringing up interface eth0:  Device eth0 does not seem to be present, delaying initialization 在虚拟机VM下安装的CentOS遇到这个问题,我是将centos.vmx放到其他的VM下打开 #dhclient #service network restart Shutting down loopback insterface:                                        

nova boot from volume在多主机zone下的坑

测试环境:3个计算节点,分别属于3个zone [[email protected] ~(keystone_admin)]# nova availability-zone-list +-----------------------+----------------------------------------+ | Name                  | Status                                 | +-----------------------+-