Как выбрать, какой телефон должен быть серверным, а какой клиентским?

Я разрабатываю приложение прямо сейчас, где (я сохраню это с точки зрения сети) два устройства будут передавать данные друг с другом (скорее всего, некоторые данные JSON и, возможно, изображение) после помещения одного телефона поверх разное. У меня проработана логика обнаружения устройства, но теперь я застрял на инициации: как два телефона узнают, какой из них сначала будет клиентом, а какой - сервером, а затем переключиться? Я использую Apple Network Framework.

Может быть, оба устройства выбирают случайное число, 0 или 1, а затем передают результат другому устройству, причем то, у которого 0, является сервером, а то, у которого 1, - клиентом? А если у них обоих снова будет одинаковый номер? У меня нет большого опыта работы в сети, поэтому я действительно не уверен.

PS: Я попытался с помощью MultipeerConnectivity рамки, так как он предлагает равный-равному функциональности я ищу, но активно не поддерживается Apple, (то есть плохо для будущего теплоизолирующие) и не предлагает customisability Я ищу, поэтому я решил пойти еще дальше с Network Framework, который активно поддерживается и с которым легко взаимодействовать.

1 ответ

MultipeerConectivity и Network framework имеют разные функции, с помощью Network вы можете общаться, создавая архитектуру клиент-сервер, используя TCP/UDP (и Websocket поверх TCP) и WiFi, в то время как MultipeerConectivity позволяет подключать несколько устройств через WiFi и Bluetooth. Как видите, они не совпадают.

Для Network Framework есть руководство по настраиваемой связи P2P, разработанное Apple.

Я не знаю, что делает ваше приложение, но обычно одним из устройств должен быть сервер / слушатель, например:

  • В приложении чата это будет то, что создаст комнату
  • В игре он будет первым, кто войдет в игру
Другие вопросы по тегам