gpt4 book ai didi

c++ - 如何在 Linux 中实用地检索连接的接入点信息

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:00 26 4
gpt4 key购买 nike

我正在寻找 C++ 示例代码,它可以在 Linux 中检索连接的接入点信息。

Android 中的 WifiManager.GetConnectionInfo API 提供了类似的功能,它返回 Android 设备中连接的 AccesPoint 的 BSSID、SSID、SignalStrength 和其他参数。

我们有像 Windows 这样的 LINUX 中可用的 Wifi 系统 API 吗?

下面的帖子建议使用 cfg80211,但我不知道如何使用它。 http://www.linuxwireless.org/en/developers/Documentation/cfg80211/

最佳答案

请引用下面提到的函数,它将打印连接的接入点的 MAC 地址和网络 SSID。

char *
get_essid (char *iface)
{
int fd;
struct iwreq w;
char essid[IW_ESSID_MAX_SIZE];

if (!iface) return NULL;

fd = socket(AF_INET, SOCK_DGRAM, 0);
printf("Socket desc is: %d\n", fd);

if(fd <0)
{
printf("Socket failed: %d", fd);
}

strncpy (w.ifr_ifrn.ifrn_name, iface, IFNAMSIZ);
memset (essid, 0, IW_ESSID_MAX_SIZE);
w.u.essid.pointer = (caddr_t *) essid;
w.u.data.length = IW_ESSID_MAX_SIZE;
w.u.data.flags = 0;

int ret = ioctl (fd, SIOCGIWESSID, &w);
printf("ioctl ret is : %d\n", ret);

ret = ioctl (fd, SIOCGIFHWADDR, &w);
printf("ioctl ap details ret is : %d\n", ret);

//get HWaddr
u_int8_t hd[6];


memcpy(hd,w.u.ap_addr.sa_data,sizeof(hd));
int i=0;
printf("HWaddr:");
for(i;i<6;i++)
{
printf("%02X:",hd[i]);
}

close (fd);


return strdup (essid);
}

关于c++ - 如何在 Linux 中实用地检索连接的接入点信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52438086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com