收到的可用WiFi网络的MAC地址不正确

时间:2013-12-16 14:31:43

标签: c wifi

我想在这个区域找到可用的“Wi_Fi”的MAC地址但我收到错误的MAC地址(至少我确定这里有一个接入点MAC地址,我知道这与我收到的东西不一样)

我的代码是:

       char MAC[64];

         int len=sizeof(MAC)/sizeof(int);
         int i;
            for(i=1;i<len;i++){
            MyScanResults = WFScanList(i);
           //unsigned long long testMac =MyScanResults.bssid[i];
           unsigned char* pTestMac = (unsigned char*)&MyScanResults.bssid[i];
           sprintf(MAC, "%02x:%02x:%02x:%02x:%02x:%02x",
           (unsigned)pTestMac[6],
           (unsigned)pTestMac[5],
           (unsigned)pTestMac[4],
           (unsigned)pTestMac[3],
           (unsigned)pTestMac[2],
           (unsigned)pTestMac[1]
           );

我的预期答案是:

  

bssid:00:12:17:C6:F4:36

但每次我收到这样的地址,有时候这个地址也会改变:

  

MAC:73:6D:65:36:F4:C6

我也改变了数字顺序,但没有... 谁有人告诉我我的问题在哪里? 谢谢 此致

1 个答案:

答案 0 :(得分:1)

你的代码没有多大意义。

您在之前致电MyScanResults = WFScanList(i); 甚至声明i。此外,1的循环和索引非常可疑。

我还认为i的使用在整个过程中都非常奇怪,计算指向MyScanResults.bssid的指针,有效地切片,不可能是正确的。

我认为你的循环应该是这样的:

for(i=0; i < WFNetworkFound; i++)
{
    const tWFNetwork myScanResults = WFScanList(i);
    sprintf(MAC, "%02x:%02x:%02x:%02x:%02x:%02x",
       myScanResult.ssid[0],
       myScanResult.ssid[1],
       myScanResult.ssid[2],
       myScanResult.ssid[3],
       myScanResult.ssid[4],
       myScanResult.ssid[5]);

这假设您已经运行扫描,以便更新全局变量WFNetworkFound。它还假设您正在使用openPicus,因此我从中选择了一两件事的this reference code是有效的。