如何在Java,C#和/或C中查找无线网络列表(SSID)?

是否有可用的工具包/包可用于查找Java,C#或C for Windows XP +中可用的无线网络列表(SSID)? 任何示例代码将不胜感激。

对于C#,请查看Managed Wifi API ,它是随Windows XP SP2及更高版本提供的Native Wifi API的包装器。

我没有测试过这段代码,但是查看Managed Wifi API示例代码,这应列出可用的SSID。

WlanClient client = new WlanClient(); foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces ) { // Lists all available networks Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 ); foreach ( Wlan.WlanAvailableNetwork network in networks ) { Console.WriteLine( "Found network with SSID {0}.", GetStringForSSID(network.dot11Ssid)); } } static string GetStringForSSID(Wlan.Dot11Ssid ssid) { return Encoding.ASCII.GetString( ssid.SSID, 0, (int) ssid.SSIDLength ); } 
 ArrayListssids=new ArrayList(); ArrayListsignals=new ArrayList(); ProcessBuilder builder = new ProcessBuilder( "cmd.exe", "/c", "netsh wlan show all"); builder.redirectErrorStream(true); Process p = builder.start(); BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while (true) { line = r.readLine(); if (line.contains("SSID")||line.contains("Signal")){ if(!line.contains("BSSID")) if(line.contains("SSID")&&!line.contains("name")&&!line.contains("SSIDs")) { line=line.substring(8); ssids.add(line); } if(line.contains("Signal")) { line=line.substring(30); signals.add(line); } if(signals.size()==7) { break; } } } for (int i=1;i 

好吧,你没有指定操作系统,因此,对于Linux,我将建议Jean Tourrilhes的无线工具Linux( http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html )。 iwlist()命令显示有关可用网络的大量信息。 源代码在C中。另一种方法是使用libpcap在C中编写自己的代码,用于捕获信标帧并从中提取SSID(仅在监视模式下)。 我还没有测试过我的嗅探代码所以我不会在这里粘贴它,但这是非常简单的工作。