Можно ли подключить сокет между двумя мобильными устройствами (iPhone) через интернет? - PullRequest
10 голосов
/ 01 мая 2009

Можно ли подключить сокет между двумя мобильными устройствами (iPhone) через Интернет?

Я пытаюсь определить IP-адрес каждого устройства и подключиться напрямую. Я знаю, что это можно сделать с помощью Bonjour, но это работает только в локальных сетях. Мне нужно высокоскоростное соединение между двумя устройствами через Интернет.

Спасибо.

Ответы [ 7 ]

10 голосов
/ 01 мая 2009

Если у вас есть оба IP-адреса и они оба маршрутизируемые, это должно быть возможно. Я не уверен, хотя, если IP, выданный сетью 3G, является маршрутизируемым. Если вы используете WIFI, IP-адрес, который вы получаете, почти наверняка не маршрутизируется. Предполагая, что у вас есть маршрутизируемый IP, это должно быть возможно.

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

Может быть немного сложно управлять «незарегистрированными» IP-адресами, когда приложение закрыто или хотя IP-адрес меняется, но это должно быть выполнимо.

ETA:

Если у вас есть сервер, к которому они оба могут подключиться, вы сможете реализовать решение с использованием этого сервера (т.е. без непосредственного подключения телефонов друг к другу). Это позволило бы избежать проблемы наличия маршрутизируемых IP-адресов для телефонов.

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

Как только он узнает, с кем хочет поговорить, ваше серверное программное обеспечение соединит их вместе, считав из разъема одного телефона и записав эти данные в разъем другого телефона.

2 голосов
/ 01 мая 2009

Только предложение, но если вы сможете заставить каждого из них подключаться к третьему сайту, вы будете знать адрес каждого из них. Отправьте адрес телефона A на телефон B (и / или телефон B на телефон A), а затем подключите их по своему усмотрению.

1 голос
/ 16 сентября 2010

Я столкнулся с этой проблемой при разработке приложения. Я пытался подключиться к сотовой карте ПК с iPhone. Проблема в том, что AT & T не поддерживает мобильную терминацию для iPhone, поэтому физически невозможно подключить два телефона в сети AT & T друг к другу. Это прямо от антенного AT & T.

Я смог заставить это работать, подключив iPhone VPN к серверу, а затем подключиться к сотовой карте ПК, но в остальном он не будет работать.

1 голос
/ 16 июня 2010

Это старая ветка, но я только что натолкнулся на нее. Вы можете использовать STUN-сервер (или NAT-PMP), чтобы получить общий IP-адрес / порт, а затем отправить его на другой телефон. Пока вы открываете порт прослушивания на первом устройстве, ваше второе устройство может просто подключаться напрямую, используя IP-адрес / порт публикации, который вы отправили ему в SMS-сообщении (push-реестр SMS может автоматически разбудить ваше приложение на втором устройстве для сделай это)

1 голос
/ 01 мая 2009

WiFi-маршрутизаторы часто имеют функцию, называемую «Port Triggering», которая позволяет внутренним хостам (в данном случае iPhone) информировать маршрутизатор о том, что они хотели бы иметь перенаправленные соединения на определенный порт. Я понятия не имею, поддерживает ли iPhone этот протокол.

Для поиска по IP вы можете рассмотреть возможность использования DynamicDNS, если два хоста известны заранее, ИЛИ как указано выше, настраиваемый веб-сервис, если это не так (т. Е. Друзья обмениваются именами хостов с незнакомцами, обнаруживающими друг друга)

1 голос
/ 01 мая 2009

Вы просмотрели все функции 3.0? Конкретно одноранговая сеть (существование которой является общедоступной).

0 голосов
/ 01 мая 2009

У меня очень сильное чувство (но нет доказательств), что адрес iPhone будет не маршрутизируемым. Конечно, на самом деле это зависит от оператора, но AT & T выдает адреса 10.x.x.x.

Apple имеет образец (настольный) код , который использует Bonjour для реализации сопоставления портов на маршрутизаторе WiFi, который поддерживает UnPnP.

...