2009-05-01 4 views
9

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

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

Спасибо.

+0

Почему субъективный? –

+1

Субъективно, потому что я открыт для любых мнений о том, как я должен/мог приближаться к этому. Благодаря! –

+1

Это не то, что субъективно. Это довольно объективно. Retagged. Я aloso удалил в реальном времени, потому что это тоже не «в реальном времени». –

ответ

9

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

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

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

ETA:

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

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

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

+0

Я могу демонстративно обрабатывать регистрацию IP-адреса каждого устройства на веб-сервере. Тем не менее, я обеспокоен тем, что вы сказали о Wi-Fi и 3G, возможно, возможно, не маршрутизируемым. Я бы хотел, чтобы он работал с iPod touch, который мог ТОЛЬКО подключаться через Wi-Fi. Я могу настроить веб-сервер. Я предполагаю, что каждое устройство может подключаться к серверу с помощью (стойкого?) Сокета. Я просто не знаю, как передавать данные между двумя соединениями/сокетами на сервере. Кроме того, это касается того, что это будет достаточно быстро? –

+0

Также спасибо за ваши отзывы. Я чувствую, что вода становится менее грязной. –

+0

ОК, отредактировал мой ответ с дополнительной информацией. Что касается производительности, это будет зависеть в значительной степени от того, насколько быстро ваш сервер и сколько одновременных соединений ему придется обрабатывать. С хорошо реализованным сервером он должен быть почти таким же быстрым, как прямое соединение между телефоном и телефоном. –

2

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

1

Вы просмотрели все функции 3.0? В частности, сетевые сети (существование которых является общедоступным).

+1

peer с 3.0 - это WAN и Bluetooth. Я получил тех, кто работает, я просто хочу добавить 3-й уровень –

1

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

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

0

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

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

1

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

1

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

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

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

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