Как подключиться к беспроводной сети программно под OS X?

C или C++ предпочтительнее. Это не проект Objective-C.

Я уже знаю SSID. В сети может быть безопасность WPA2. Мне нужно подключиться с определенного интерфейса (например, eth2) на случай, если на машине установлено более одного беспроводного интерфейса.

Я понимаю, что существуют различные инструменты командной строки (например, те, что приведены в ответах на этот вопрос), но я бы хотел присоединиться к сети без выполнения внешних зависимостей, которые могут быть или не быть на компьютере. Благодарю.

3 ответа

Решение

В C вы можете сделать следующее:

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

networksetup Инструмент будет на машине, так как он является частью стандартной операционной системы. Нет необходимости изобретать велосипед.

Из Терминала попробуйте это:

networksetup -setairportnetwork $INTERFACE $SSID $PASSWORD

Или, если вы хотите интегрировать его в приложение Какао /Objective-C:

проверьте мой код здесь для runCmd ( (Mac) Создание приложения Xcode, которое выполняет сценарии оболочки) о том, как запустить внешнюю команду с NSTask а также NSPipe,

В этом случае вы должны назвать это так:

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

но я хотел бы присоединиться к сети, не выполняя внешних зависимостей, которые могут быть или не быть на машине.

Это будет там...:-)

Другие вопросы по тегам