2011-01-18 1 views
1

Возможно ли, чтобы iPhone (или любое другое устройство через сотовую сеть) прослушивал сокет и ожидал, что другие iPhone будут подключаться через AT & T-сеть (P2P)? Мы можем успешно это сделать через нашу локальную сеть, но не через сеть AT & T.прослушиватель сокетов iPhone по сотовым данным

ответ

3

Я не являюсь клиентом AT & T, но устройства на их сети 3G почти наверняка за какой-то формой Network Address Translation или «NAT», как это обычно известно.

Учитывая, что вы хотите двустороннюю связь между устройствами, которые почти наверняка являются обособленными (возможно, разными) NAT, вам нужен какой-то способ перемещения рассматриваемых NAT. Введите Session Traversal Utilities for NAT, или «STUN» для краткости. Также рассмотрите общую сеть hole-punching техники.

Существует объективно-C/Cocoa каркас для обхода NAT по имени TCMPortMapper под лицензией MIT. Он обеспечивает поддержку UPnP и NAT-PMP, что может или не может помочь вам в этом - это зависит от того, может ли AT & T (или любая другая телекоммуникационная компания) запрашивать порты.

Если вышеуказанной структуры недостаточно, вам нужно будет изучить хорошо известный (то есть на широко открытом интернет-ретрансляторе), чтобы оповещать соединения между двумя устройствами. Это метод, который обычно используется в таких сервисах, как Skype, Hamachi, Xbox Live и другие. Удачи!

+0

Благодарим за помощь :). Это то, что мы закончили делать (сервер ретрансляции). Жаль, что этот ответ не мог прийти раньше :( – irwinb

0

Я не специалист по iPhone, но это в значительной степени зависит от транспортных уровней, доступных на iPhone. Если UDP и TCP доступны, тогда есть шанс. Если у iPhone есть публичный IP-адрес (что я сомневаюсь), то это ваш счастливый день, потому что ответ да (по крайней мере теоретически).

Вы можете легко реализовать прослушиватель для UDP и реализовать некоторый код плиты котла, чтобы установить удаленное соединение. Но вы быстро заметите, что вам придется решать более сложные проблемы, такие как поиск общедоступного IP-адреса peer (т. Е. Поиск одноранговых узлов).

Если это становится слишком сложным, вам необходимо изучить рамки P2P, такие как JXTA (или JXSE, его реализация на Java). Кстати, JXTA/JXSE работает для одноранговых узлов с частным IP-адресом. Я слышал, что JXSE был успешно перенесен на Android.