2010-02-27 99 views
4

这是我想在.NET CF 3.5(C#)应用如何连接到WiFi网络在.NET CF C#3.5

1)检查无线适配器工作要做/主动 2)使用可用的SSID,密码和其他详细信息添加首选网络 3)建立与首选网络的连接

我尝试使用OpenNetCF.Net.NetworkInformation类,但运气不佳!我无法检测到无线网络。包括wifi和蓝牙的所有网络都显示为以太网。

foreach (var networkInterface in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    if (networkInterface is WirelessNetworkInterface) 
     MessageBox.Show("Found a WirelessNetworkInterface"); 
    else if (networkInterface is WirelessZeroConfigNetworkInterface) 
     MessageBox.Show("Found a WirelessZeroConfigNetworkInterface"); 
    else 
     MessageBox.Show("Ethernet??"); 
} 

我遇到的问题在这里讨论http://community.opennetcf.com/forums/t/11099.aspx。但是没有解决方案。

是否有任何.NET CF API允许我与Wifi进行交互?

回答

3

你误会了。顾名思义,它就是所有的网络接口。蓝牙和Wifi(甚至RNDIS USB连接)都是网络接口,因此将被枚举。基本上,这只是要求NDIS告诉我们它知道的所有接口。

它正在迭代,它有两件事。首先,它询问WZC是否知道接口(即接口驱动程序是否注册了WZC)。如果确实如此,那么我们知道它是符合WZC标准的无线设备,我们会获得更多信息并返回WirelessZeroConfig接口。

然后我们要求NDIS是设备的驱动程序,报告自己是无线设备。如果确实如此,我们将获得无线网络的NDIS信息并返回无线接口。

其他一切都变成了通用的NetworkInterface。

那么无线设备如何显示为通用的NetworkInterface?简单。该驱动程序没有向WZC注册,也没有通过NDIS报告它是无线的。我们的代码无法检测到驱动程序未报告的内容。这实际上在较老的思科卡中很常见,它使用Cico专有的无线接口卡。它们实际上是无线设备,但由于该软件没有告诉我们,因为我们没有查询任何专有API,所以我们只能返回适配器的通用NDIS信息。

如果您有这样的设备,唯一的办法是与适配器OEM交谈,看看他们是否有适合您的API。

-1

您可以使用System.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType = NetworkInterfaceType.Wireless80211来检测适配器是否是WiFi apdater。

+1

除Compact Framework中没有'NetworkInterface'类或甚至'System.Net.NetworkInformation'命名空间外。 – ctacke 2013-04-21 17:05:49

相关问题