【问题标题】:How do I join a wireless network programmatically under OS X?如何在 OS X 下以编程方式加入无线网络?
【发布时间】:2012-04-26 15:40:26
【问题描述】:

首选 C 或 C++。这不是一个 Objective-C 项目。

我已经知道 SSID。网络上可能存在 WPA2 安全性。如果机器有多个无线接口,我需要从特定接口(例如 eth2)加入。

我意识到那里有各种命令行工具(例如,this question 的答案中提供的工具),但我想加入网络而不执行可能存在或不存在于机器上的外部依赖项.谢谢。

【问题讨论】:

    标签: c++ macos wifi


    【解决方案1】:

    networksetup 工具在机器上,因为它是标准操作系统的一部分。无需重新发明轮子。

    【讨论】:

      【解决方案2】:

      在 C 中,您可以执行以下操作:

      execlp("networksetup", "networksetup", "-setairportnetwork", "$INTERFACE", "$SSID", "$PASSWORD", NULL);
      

      【讨论】:

      • 请注意,我必须在参数列表的末尾添加一个 NULL 以避免收到 Missing sentinel in function call 警告。
      【解决方案3】:

      从终端,试试这个:

      networksetup -setairportnetwork $INTERFACE $SSID $PASSWORD
      

      或者,如果您想将其集成到 Cocoa/Objective-C 应用程序中

      在这里查看我的代码runCmd ((Mac) Creating Xcode app that executes shell scripts),了解如何使用NSTaskNSPipe 运行外部命令。

      在这种情况下,你应该这样称呼它:

      [self runCmd:@"/usr/sbin/networksetup" 
          withArgs:[[NSArray alloc] initWithObjects:@"-setairportnetwork",
                                                    @"INTERFACE",
                                                    @"SSID",
                                                    @"PASS",
                                                    nil]];
      

      但我想在不执行外部操作的情况下加入网络 机器上可能存在也可能不存在的依赖项。

      在那里... :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        • 2013-01-01
        • 2014-05-18
        • 1970-01-01
        相关资源
        最近更新 更多