Как я могу легко отправлять данные между 2-мя iPhone или Mac через Wi-Fi? - PullRequest
0 голосов
/ 28 декабря 2011

Я уже несколько дней пытаюсь разобраться с этим. Сегодня был еще один день, полный попыток, моя последняя попытка закончилась неудачей. Вместо того, чтобы просто закрыть его и лечь спать, подумав: «Еще один день, когда я просто не смог этого сделать», - подумал я здесь. Я сейчас в своем уме. CocoaAsyncSocket Я не могу приступить к работе, равно как и никаких обучающих программ или других «решений», которые я нашел. Вот что я хочу сделать:

Пользователь выбирает из списка компьютер или iphone в сети Wi-Fi для подключения, на котором также работает приложение. Они соединяются, нажимается другая кнопка, и данные отправляются с первого устройства на второе. Второе устройство также может отправлять вещи обратно. Это одноранговая сеть.

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

1 Ответ

5 голосов
/ 29 декабря 2011

На самом деле ваш вопрос состоит из трех частей:

  1. Как определить соединение WiFi (iPhone)
  2. Как мне рекламировать / обнаруживать хосты / сервисы?
  3. Как мне передавать данные между хостами?

На низком уровне вы можете передавать данные с использованием соединения TCP / IP (вы прослушиваете какой-то порт хоста A и подключаетесь к этому хосту с хостаБ).Тем не менее, хосту B необходимо выяснить, что хост A находится в одной и той же локальной сети - обычно это делается с помощью хоста A, отправляющего широковещательные сообщения (скажем, через UDP) в локальной сети, которые идентифицируют его, чтобы хост B мог определитьIP-адрес А, чтобы он мог подключиться к нему.И, наконец, на устройстве, отличном от Mac, вы можете запустить все это только после того, как обнаружите, что устройство находится в сети Wi-Fi, поскольку в противном случае оно не будет работать.

Реализация всего вышеперечисленного (кромедля передачи данных) не совсем тривиально, но, к счастью, Apple предоставляет несколько инструментов для этого: SCNetworkReachability предоставляет API, который будет уведомлять вас, когда устройство подключится к сети Wi-Fi (только для iOS, не требуется в Mac OS X).Тогда реклама и обнаружение услуг могут быть реализованы с помощью Bonjour: вы регистрируете свой собственный сервис, используя NSNetService на одном хосте, а другой может вызывать NSNetServiceBrowser, чтобы просмотреть локальную сеть на предмет доступных пиров.Наконец, вы можете использовать потоки для передачи данных, как только вы обнаружили нужный сервис.Взгляните на документацию Apple - здесь приведен пример кода для всех перечисленных объектов.Я бы не назвал это простым, но это потому, что то, что вы хотите, технически не совсем просто;).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...