2010-02-27 65 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

相關問題