Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以从Linux中的C代码中获取SSID和MAC地址吗?_C_Networking_Ssid - Fatal编程技术网

我可以从Linux中的C代码中获取SSID和MAC地址吗?

我可以从Linux中的C代码中获取SSID和MAC地址吗?,c,networking,ssid,C,Networking,Ssid,我正在为我的Majaro Linux编写一个C备份程序。只有在连接到家庭网络时,它才能在家庭本地服务器中的特定时间备份文件。因此,我需要获取当前网络的SSID和MAC地址,以确定它是否是我的网络 是否有Linux(Arch)默认命令、C库函数或文件包含此信息 我已经尝试了一些Linux工具,例如ifconfig,但对我来说没用 救命啊 完成 谢谢你们所有人的帮助,尤其是对这件事的帮助。 它工作得很好 这正是我一直在寻找的 我只是把它添加到我的主要项目中 #include "../wifi_sca

我正在为我的Majaro Linux编写一个C备份程序。只有在连接到家庭网络时,它才能在家庭本地服务器中的特定时间备份文件。因此,我需要获取当前网络的SSIDMAC地址,以确定它是否是我的网络

是否有Linux(Arch)默认命令、C库函数或文件包含此信息

我已经尝试了一些Linux工具,例如ifconfig,但对我来说没用

救命啊

完成 谢谢你们所有人的帮助,尤其是对这件事的帮助。 它工作得很好

这正是我一直在寻找的

我只是把它添加到我的主要项目中

#include "../wifi_scan.h"
#include <stdio.h>  
#include <unistd.h> 

const char *bssid_to_string(const uint8_t bssid[BSSID_LENGTH], char  bssid_string[BSSID_STRING_LENGTH])
    {
        snprintf(bssid_string, BSSID_STRING_LENGTH, "%02x:%02x:%02x:%02x:%02x:%02x",
             bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]);
        printf("%x\n", bssid[5]);
        return bssid_string;
    }

    int main(int argc, char **argv){

        struct wifi_scan *wifi=NULL;
        struct station_info station;
        char mac[BSSID_STRING_LENGTH]; 

        wifi=wifi_scan_init(argv[1]);
        wifi_scan_station(wifi, &station);

        printf("ssid = %s mac = %s \n", station.ssid, bssid_to_string(station.bssid, mac));

        wifi_scan_close(wifi);

    }
#包括“./wifi\u scan.h”
#包括
#包括
const char*bssid_到_字符串(const uint8_t bssid[bssid_长度]、char bssid_字符串[bssid_字符串长度])
{
snprintf(bssid字符串,bssid字符串长度,“%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x”,
bssid[0]、bssid[1]、bssid[2]、bssid[3]、bssid[4]、bssid[5];
printf(“%x\n”,bssid[5]);
返回bssid_字符串;
}
int main(int argc,字符**argv){
结构wifi_scan*wifi=NULL;
结构站\信息站;
字符mac[BSSID_字符串_长度];
wifi=wifi扫描初始化(argv[1]);
wifi_扫描_站(wifi和站点);
printf(“ssid=%s mac=%s\n”,station.ssid,bssid_to_字符串(station.bssid,mac));
wifi\u扫描\u关闭(wifi);
}

也许libpcap库有助于在c程序中获取有关网络的一些信息。您可能想看看:这实际上是一个linux问题,而不是c问题。您需要的是提供这些数据的linux库。在您的C代码中链接到这些库,您就很好了。这里有一个例子:这是一个很好的wifi扫描仪的实现,您可能会感兴趣。