IPhone p2p - есть ли способ подключения к более чем 1 устройствам?

Возможно ли подключиться к более чем 1 устройствам с использованием новой системы GameKit? До сих пор все примеры, которые я видел, показывают, как мы можем подключиться к одному устройству. Даже интерфейс подключения по умолчанию позволяет пользователю выбрать только одно соединение.

Спасибо.

Ответ 1

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

К сожалению, вы не сможете использовать стандартный пользовательский интерфейс GKPeerPickerController, чтобы настроить экземпляр GKSession для вас, если вы хотите поддерживать более двух устройств. Вместо этого вы должны разработать собственные элементы пользовательского интерфейса для настройки и настройки соединений между мастером/сервером и несколькими клиентами.

Вот простой способ включить GameKit для более чем двух устройств:

Когда вы инициализируете экземпляр GKSession с помощью initWithSessionID: displayName: sessionMode, используйте:

  • sessionMode: GKSessionModeServer для сервера/мастера
  • sessionMode: GKSessionModeClient для других (нескольких) клиентов

sessionMode: GKSessionModePeer является третьим доступным параметром и является опцией, используемой в большинстве примеров кода, предоставленных Apple, таких как демонстрация GKTank.

Примечание. Вероятно, вы можете использовать GKSessionModePeer и по-прежнему иметь сеть из более чем двух устройств, поскольку одноранговый режим помещает устройство в режим сервера и клиента одновременно, пока не будет установлено соединение. Явная настройка одного устройства, так как сервер может упростить настройку, которая полезна для тестирования GameKit API.

Для сервера:

GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeServer]; 

Для клиента (ов):

GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeClient]; 

Ответ 2

В прошлом я читал, что вы можете подключить до шестнадцати устройств с помощью Gamekit. Я считаю, что вы можете делать только два раза в режиме одноранговой сети, чтобы сделать больше двух, требуется, чтобы одно устройство было установлено как master, а остальные в клиентском режиме.

Я бы посмотрел примеры, демонстрирующие использование мастера/клиента, клиентская сторона должна применяться ко всем трем.

Вы можете вызвать +maxPlayersAllowedForMatchOfType: на GKMatchRequest (iOS6 +), чтобы получить фактическое число, которое может меняться для каждого устройства, поэтому вы должны вероятно, использовать это как верхнюю границу.

Ответ 3

Насколько я знаю, при использовании Framework GameKit вы можете только пары пары устройств, один из которых действует как сервер, а другой - как клиент (если оба они инициализируются как одноранговые узлы, вам придется решить, какой из них будет действовать как сервер, либо произвольно, либо путем случайного выбора).

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

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