【发布时间】:2012-04-26 15:40:26
【问题描述】:
首选 C 或 C++。这不是一个 Objective-C 项目。
我已经知道 SSID。网络上可能存在 WPA2 安全性。如果机器有多个无线接口,我需要从特定接口(例如 eth2)加入。
我意识到那里有各种命令行工具(例如,this question 的答案中提供的工具),但我想加入网络而不执行可能存在或不存在于机器上的外部依赖项.谢谢。
【问题讨论】:
首选 C 或 C++。这不是一个 Objective-C 项目。
我已经知道 SSID。网络上可能存在 WPA2 安全性。如果机器有多个无线接口,我需要从特定接口(例如 eth2)加入。
我意识到那里有各种命令行工具(例如,this question 的答案中提供的工具),但我想加入网络而不执行可能存在或不存在于机器上的外部依赖项.谢谢。
【问题讨论】:
networksetup 工具将在机器上,因为它是标准操作系统的一部分。无需重新发明轮子。
【讨论】:
在 C 中,您可以执行以下操作:
execlp("networksetup", "networksetup", "-setairportnetwork", "$INTERFACE", "$SSID", "$PASSWORD", NULL);
【讨论】:
Missing sentinel in function call 警告。
从终端,试试这个:
networksetup -setairportnetwork $INTERFACE $SSID $PASSWORD
或者,如果您想将其集成到 Cocoa/Objective-C 应用程序中:
在这里查看我的代码runCmd ((Mac) Creating Xcode app that executes shell scripts),了解如何使用NSTask 和NSPipe 运行外部命令。
在这种情况下,你应该这样称呼它:
[self runCmd:@"/usr/sbin/networksetup"
withArgs:[[NSArray alloc] initWithObjects:@"-setairportnetwork",
@"INTERFACE",
@"SSID",
@"PASS",
nil]];
但我想在不执行外部操作的情况下加入网络 机器上可能存在也可能不存在的依赖项。
它会在那里... :-)
【讨论】: