【发布时间】:2010-12-13 18:57:34
【问题描述】:
许多科学家已发表papers 记录如何通过测量其信号强度、到达时间、往返时间等来跟踪通过 WLAN 连接的设备。知道如何使用任何 .NET API 在 Windows 中访问这些值?
或者您是否知道已经可用于位置跟踪的软件 SDK?
【问题讨论】:
标签: c# windows location tracking wifi
许多科学家已发表papers 记录如何通过测量其信号强度、到达时间、往返时间等来跟踪通过 WLAN 连接的设备。知道如何使用任何 .NET API 在 Windows 中访问这些值?
或者您是否知道已经可用于位置跟踪的软件 SDK?
【问题讨论】:
标签: c# windows location tracking wifi
你好,对于 WIndows 7,这是一个很好的代码,它可以检测所有带有 MAC 地址 RSSI SSID 的 AP:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using NativeWifi;
class Program
{
static void Main(string[] args)
{
WlanClient client = new WlanClient();
// Wlan = new WlanClient();
try
{
foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
{
Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList();
foreach (Wlan.WlanBssEntry network in wlanBssEntries)
{
int rss = network.rssi;
// MessageBox.Show(rss.ToString());
byte[] macAddr = network.dot11Bssid;
string tMac = "";
for (int i = 0; i < macAddr.Length; i++)
{
tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper();
}
Console.WriteLine("Found network with SSID {0}.", System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString());
Console.WriteLine("Signal: {0}%.", network.linkQuality);
Console.WriteLine("BSS Type: {0}.", network.dot11BssType);
Console.WriteLine("MAC: {0}.", tMac);
Console.WriteLine("RSSID:{0}", rss.ToString());
}
Console.ReadLine();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
希望对你有帮助
【讨论】:
Managed Wifi API 将提供信号强度信息。这是一个代码 sn-p 改编自我之前提出的问题并得到了回答 here:
static void Main(string[] args)
{
WlanClient client = new WlanClient();
foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces )
{
Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 );
foreach ( Wlan.WlanAvailableNetwork network in networks )
{
Console.WriteLine( "Found network with SSID {0} and Siqnal Quality {1}.", GetStringForSSID(network.dot11Ssid), network.wlanSignalQuality);
}
}
}
static string GetStringForSSID(Wlan.Dot11Ssid ssid)
{
return Encoding.ASCII.GetString(ssid.SSID, 0, (int) ssid.SSIDLength);
}
【讨论】:
Windows 本身现在提供Location API。
【讨论】: