【发布时间】:2015-06-11 16:27:17
【问题描述】:
我正在尝试在 C# 中使用 NativeWifi 编写一个 WLAN 指纹识别程序。为此,我运行一个循环多次获取 wlan 信息,然后使用 matlab 对数据进行平均/分析。
问题是我得到所有相同的值,即使我在房子里走动,当程序运行时。从互联网上我看到有一个缓存可以存储可用网络的数据。我想知道是否存在重置此缓存的系统调用。
我也看到了这个使用 cmd 调用
netsh wlan 显示网络模式=bssid
这给了我相同的值,直到我在我的操作系统中打开可用的 wifi 网络,如果我再次运行它,它会给出不同的值。
编辑:这个系统仅供我使用,所以如果有一个已知的库可以为我处理这个问题,我会很乐意在 linux 平台上重新开始。不过,我什至不知道用什么谷歌来获取信息。任何与“网络缓存”相关的东西都带我去帮助无关主题的线程......
我将在下面提供我的代码的相关部分:
public void get_info_instance(StreamWriter file)
{
try
{
foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
{
Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList();
foreach (Wlan.WlanBssEntry network in wlanBssEntries)
{
int rss = network.rssi;
byte[] macAddr = network.dot11Bssid;
string tMac = "";
for (int i = 0; i < macAddr.Length; i++)
{
tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper();
}
file.WriteLine("Found network: " + System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString());
file.WriteLine("Signal: " + network.linkQuality + "%");
file.WriteLine("BSS Type: " + network.dot11BssType + ".");
file.WriteLine("RSSID: " + rss.ToString());
file.WriteLine("BSSID: " + tMac);
file.WriteLine(" ");
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
【问题讨论】:
-
你试过netsh wlan delete命令,看看是否刷新?
-
这是我找到的唯一解决方案,但是执行需要一秒钟或更长时间。该代码必须以大约一个数量级的速度运行才能使用(试图获得数千个网格点。)
-
对不起,我有点困惑,在这种情况下,“个人资料”的上下文是什么?我不明白我会发送什么参数来删除缓存的信息。该信息是否被视为个人资料?