我正在使用C#进行编程,我想在无线网络(Wi-Fi)中检测手机(名称,IP地址,RSSI,...)以计算我的电脑和手机之间的距离 实际上,我能够通过以下方式检测连接到同一网络的计算机名称:
using System.DirectoryServices;
...
List<String> _ComputerNames = new List<String>();
String _ComputerSchema = "Computer";
DirectoryEntry _WinNTDirectoryEntries = new DirectoryEntry("WinNT:");
foreach (DirectoryEntry _AvailDomains in _WinNTDirectoryEntries.Children)
{
foreach (DirectoryEntry _PCNameEntry in _AvailDomains.Children)
{
if (_PCNameEntry.SchemaClassName.ToLower().Contains(_ComputerSchema.ToLower()))
{
_ComputerNames.Add(_PCNameEntry.Name);
}
}
}
但我找不到连接到同一个Wi-Fi网络的手机。
如何解决此问题? 谢谢!
答案 0 :(得分:2)
我认为ActiveDirectory在这里对你来说效果不好,你可能需要更加密切地与接入点本身一起工作以获取RSSI值。除非有特定的领域知识,否则你所有的手机都是ActiveDirectory的一部分,就像Jean说的那样:你只能得到MAC地址,可能是IP地址和RSSI值。
如果您只对距离感兴趣,则可能需要使用特定设备测试一系列距离,并使用RSSI距离列表根据RSSI值估算新设备的距离。< / p>
您将遇到的问题是,您可能拥有一台设备的X RSSI值和另一台设备的2X RSSI值,它们很可能是完全相同的距离。虽然如果你只对手机感兴趣,我预计波动会不那么严重。
更准确的方法是设置多个接入点,并使用math位来对设备的位置进行三角测量,这方面的优势还可以为您提供距离和方向,相当于位置
答案 1 :(得分:0)
除非我弄错了,否则只有Wi-Fi接入点本身才能访问完整的设备列表。即使这样,它也不知道每个设备的类型。它知道每个设备的MAC地址,并且可能知道它被分配的IP(假设它也是DHCP服务器),但除此之外,设备可以是从笔记本电脑到电视的任何东西。
如果您是网络管理员,那么我可以看到这可能有用 - 如果您的策略中只有某些设备要连接到网络,那么搜索“流氓”设备是有意义的。否则,我看不出有任何理由再次尝试帮助你。