Одноранговая сеть через Wi-Fi в iOS

Я занимаюсь этим уже несколько дней и не могу найти решение. Я хочу создать одноранговую сеть через Wi-Fi на iOS. Кажется, что весь открытый исходный код поддерживает запуск сервера или клиента, но нет кода, созданного для поддержки того и другого — однорангового. Кто-нибудь знает, как я могу это сделать?


person Andrew    schedule 12.03.2013    source источник
comment
Вы смотрели что-то вроде: github.com/robbiehanson/CocoaHTTPServer Я знаю, что это все еще клиент/сервер отношения, но похоже, что встроенный сетевой API-интерфейс Apple по-прежнему является частным.   -  person JiuJitsuCoder    schedule 12.03.2013
comment
Мне неясен ваш вопрос. Вы ищете код, который позволяет создать специальную сеть Wi-Fi между двумя устройствами iOS, или вы ищете способ для двух устройств iOS, уже подключенных через Wi-Fi, для выполнения одноранговой связи?   -  person rmaddy    schedule 12.03.2013
comment
Просто узнайте, как работают интернет и сокеты BSD. Используйте вызовы bind(). Используйте STUN-серверы. Используйте много розеток. Используйте API уведомлений о доступности. Перечислить сетевые интерфейсы. Привязать к бетонным портам. Используйте многоадресные рассылки, если хотите. IP — прекрасный мир, но люди, которые учатся программировать для Apple, никогда ничего не получают :-(   -  person Brian Cannard    schedule 22.04.2015


Ответы (5)


iOS 7 добавляет Multipeer Connectivity Framework точно эта цель.

person darrinm    schedule 12.11.2013
comment
рабочая ссылка developer.apple.com/library/ios/ ДОКУМЕНТАЦИЯ/ - person sage444; 15.10.2014
comment
Я не рекомендую вам использовать этот фреймворк. Он очень универсальный, но слишком медленный. - person user2159978; 09.01.2015

Думали ли вы об использовании фреймворка GameKit от Apple? Я использовал его в прошлом для простой связи между устройствами. Это очень просто и может быстро вывести вас из ворот. Это похоже на хорошее руководство .

person Mr Rogers    schedule 12.03.2013
comment
Проблема в том, что они соглашаются с тем, что мое приложение может использовать gamekit, что кажется пользователю немного случайным. - person Andrew; 12.03.2013
comment
Какая часть, название GameKit, пользовательский интерфейс GameKit или и то, и другое? Вы можете создать свой собственный пользовательский интерфейс, и никто не станет мудрее. GKPeerPickerController упростит вашу жизнь прямо из коробки и не будет выглядеть так, будто вы играете в игру. Однако вы можете развернуть свое собственное решение и иметь собственный пользовательский интерфейс. - person Mr Rogers; 12.03.2013
comment
В настоящее время я использую GameKit для передачи данных p2p в неигровых приложениях и не знаю, чтобы пользователям когда-либо предлагалось принять или одобрить эту функцию. Соединения Bluetooth довольно легко настроить, однако соединения ненадежны, а передача данных медленнее для более чем небольших битов данных по сравнению с Wi-Fi. - person arlomedia; 02.12.2014
comment
Часть GameKit для p2p-соединения устарела. Apple рекомендует использовать Multipeer Connectivity Framework, но это слишком медленно - person user2159978; 09.01.2015

Я думаю, что Open Peer — правильное решение. Он обеспечивает реальное прямое одноранговое соединение между устройствами без необходимости использования централизованного сервера. Посмотрите это вводное видео.

person naeemjawaid    schedule 18.04.2014
comment
open peer делает это через интернет - person Karthik; 26.08.2015
comment
они, кажется, отказались от проекта iOS. Последнее обновление iOS Github было 5 лет назад - person Lance Samaria; 26.02.2020

Вы не можете создать сеть wi-fi программно в iOS, используя текущие API. Однако GameKit предлагает некоторые API для этого через Bluetooth.

Если вы хотите реализовать собственное решение с помощью CocoaHTTPServer, имейте в виду, что вы все равно не сможете создать прямое соединение Wi-Fi, вы просто сможете подключать устройства в той же (ранее существующей) сети Wi-Fi.

Ad-hoc одноранговый Wi-Fi (например, 802.11s) в iOS появится через несколько лет. Может iOSX ;)

person cleverbit    schedule 12.03.2013
comment
В документации говорится: Объект GKSession предоставляет возможность обнаруживать и подключаться к ближайшим устройствам iOS с помощью Bluetooth или Wi-Fi. - person Mr Rogers; 12.03.2013
comment
Для прямого однорангового соединения используется только bluetooth. Wi-Fi используется для Bonjour через локальную сеть. - person cleverbit; 22.03.2013
comment
GKSession устарела в iOS 7 - person user2159978; 09.01.2015

iOS поддерживает инфраструктуру многоканального подключения, которая позволяет устройствам iOS общаться друг с другом через Bluetooth, инфраструктуру (с маршрутизатором), WiFi или P2P.

Однако он не дает возможности явного использования P2P. Существует уровень абстракции от того, как подключаются любые одноранговые устройства (другие устройства iOS), и в настоящее время он не позволяет подключать устройства, отличные от iOS.

person JuJoDi    schedule 20.02.2014