使用OS X中的Swift显示所有可用的WIFI连接 [英] Display all available WIFI connections with Swift in OS X
问题描述
我正在尝试显示所有可用的WIFI连接.它不起作用.这是我的代码:
I'm trying to display all available WIFI connections. It doesn't work. Here is my code:
import Foundation
import CoreWLAN
var cwInterface = CWInterface()
do {
let routers = try cwInterface.scanForNetworksWithSSID(nil)
print(routers)
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
}
我没有任何结果.我在做什么错了?
I don't get any result. What I'm doing wrong?
推荐答案
如果使用接口名称(例如"en1")初始化CWInterface,则该方法有效.
It works if you initialize CWInterface with an interface name, like "en1".
但是最好不要使用经过编码的名称,因此我们还将使用CWWiFiClient.sharedWiFiClient().interface()
,它会返回默认的WIFI接口.
But it's better to not use harcoded names, so we'll also use CWWiFiClient.sharedWiFiClient().interface()
which returns the default WIFI interface.
用于管理所有这些的类的示例:
Example of a class to manage all this:
class Discovery {
var currentInterface: CWInterface
var interfacesNames: [String] = []
var networks: Set<CWNetwork> = []
// Failable init using default interface
init?() {
if let defaultInterface = CWWiFiClient.sharedWiFiClient().interface(),
name = defaultInterface.interfaceName {
self.currentInterface = defaultInterface
self.interfacesNames.append(name)
self.findNetworks()
} else {
return nil
}
}
// Init with the literal interface name, like "en1"
init(interfaceWithName name: String) {
self.currentInterface = CWInterface(interfaceName: name)
self.interfacesNames.append(name)
self.findNetworks()
}
// Fetch detectable WIFI networks
func findNetworks() {
do {
self.networks = try currentInterface.scanForNetworksWithSSID(nil)
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
}
}
}
使用默认界面调用它:
if let discovery = Discovery() {
print(discovery.networks)
for network in discovery.networks {
print(network.ssid!)
}
}
或具有接口名称:
let discovery = Discovery(interfaceWithName: "en1")
let results = discovery.networks
结果包含所有扫描的网络:
Results contains all the scanned networks:
[<CWNetwork: 0x608000001bd0> [ssid=SomeNetworkName, bssid=xxxx, security=WPA Enterprise, rssi=xx, channel=<CWChannel: 0x600000004fb0> [channelNumber=11(2GHz), channelWidth={20MHz}], ibss=0], etc]
这篇关于使用OS X中的Swift显示所有可用的WIFI连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!