• 如何通过C语言获取主机WLAN下的IPv4地址,MAC地址


      1 #include "stdio.h" 
      2 #include "windows.h"
      3 
      4 void GetHostWLAN_IPv4_AND_MAC(char IPv4[], char MAC[]); //获取WLAN下的IPv4和MAC地址,局域网网关IPv4地址(基于win10中文版编写)
      5 
      6 int main()
      7 {
      8     char IPv4[16] = { 0 };
      9     char MAC[18] = { 0 };
     10 11     GetHostWLAN_IPv4_AND_MAC(IPv4,MAC);
     12      13     printf("%s %d
    ", IPv4, strlen(IPv4));
     14     printf("%s %d
    ", MAC, strlen(MAC));
     15     return 0;
     16 }
     17 
     18 void GetHostWLAN_IPv4_AND_MAC(char IPv4[],char MAC[])
     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      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] != ''&&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] != ''&&strInfo[pos] != '(')
     73                         IPv4[i] = strInfo[pos];
     74                     else
     75                     {
     76                         find_ipv4 = true;
     77                         break;
     78                     }
     79                 }
     80             }
     81 
     82
     98         }
     99         if (find_mac && find_ipv4 && find_gateway)
    100             break;
    101         memset(strInfo, 0, 128);
    102     }
    103 }
  • 相关阅读:
    pcs7 opc 连接问题
    nuget 多个程序引用同一个库时,当个这个库更新时,引用的程序都要跟新,否则会在运行时出错
    nuget update FileConflictAction
    a
    C#版本
    .NET Framework版本与CLR版本之间的关系
    c# 将一种数组类型转成另一种数组类型
    tfs 清除缓存,在需要时
    java枚举和仿枚举
    java反射的用法
  • 原文地址:https://www.cnblogs.com/lyj-blogs/p/11739828.html
Copyright © 2020-2023  润新知