以编程方式创建 Ad-Hoc 网络 OS X

Programmatically create Ad-Hoc network OS X

我将如何在 OS X 上创建具有指定 SSID 和密码的无线 adhoc 网络?我尝试查看 networksetup 手册页,但没有想出任何办法来完成此操作。我应该使用另一个命令吗?

如果您不习惯使用命令行,您可以按照说明 here 进行设置,只需使用系统偏好设置 > 共享 > Internet 共享即可设置 ad-hoc 网络。在此选项卡中,您可以设置 ad-hoc 网络并指定 SSID 等。当然,这是一种非常基本的设置方式,但它对用户非常友好,但它没有为您提供设置方式它使用终端。终端中的networksetup命令,你用的是networksetup -printcommands还是networksetup -help?这提供了额外的信息,因为没有手册页。

我不熟悉,但另外找到了使用 startHostAPModeWithSSID 命令的参考 here or using the /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -i command per this server fault entry

除了编写 Swift 脚本之外,我没有找到任何真正的方法来做到这一点:

import Foundation
import CoreWLAN

var networkName = "foo";
var password = "bar";
var error: NSError?

let iface = CWWiFiClient.sharedWiFiClient().interface()

let success = iface.startIBSSModeWithSSID(
    networkName.dataUsingEncoding(NSUTF8StringEncoding),
    security: CWIBSSModeSecurity.WEP104,
    channel: 11,
    password: password as String,
    error: &error
)

if !success {
    println(error?.localizedDescription)
} else {
    NSRunLoop.currentRunLoop().run()
}

在 OSX 10.13 中,我不得不将@dan-ramos 的代码修改为:

import Foundation
import CoreWLAN

let networkName = "foo"
let password = "bar"

if let iface = CWWiFiClient.shared().interface() {
    do {
        try iface.startIBSSMode(
            withSSID: networkName.data(using: String.Encoding.utf8)!,
            security: CWIBSSModeSecurity.WEP104,
            channel: 11,
            password: password as String
        )
        print("Success")
    } catch let error as NSError {
        print("Error", error)
        exit(1)
    }
} else {
    print("Invalid interface")
    exit(1)
}