2011-12-28 4 views
-1

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

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

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

+0

Какие данные вы отправляете? Текст/Двоичный? – Devraj

+0

Вы взглянули на это: http://developer.apple.com/library/ios/#samplecode/SimpleNetworkStreams/Listings/Read_Me_About_SimpleNetworkStreams_txt.html#//apple_ref/doc/uid/DTS40008979-Read_Me_About_SimpleNetworkStreams_txt-DontLinkElementID_8 – sosborn

+0

взгляд на GameKit – bshirley

ответ

4

Есть действительно три части вашего вопроса:

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^