2012-03-04 3 views
2

В настоящее время я разрабатываю приложение на iPad, которое подключается к клиентскому ПК в локальной сети и доставляет сообщения. Я установил приложение python у клиента после прочтения следующего учебника: http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-serverКак получить доступ к сети удаленно без переадресации сервера или порта

Он отлично подходит для локальных подключений. Приложение открывает порт для подключения, и приложение iPad подключается с использованием локального IP-адреса клиента и порта.

Что произойдет, если я хочу подключиться к публичному IP-адресу? Я пробовал это, и он не работает. Я получил IP-адрес клиента от следующего сайта: http://www.whatismyip.com/

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

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

+1

Если вы слушаете порт, вы становитесь сервером. Также вы можете предоставить серверу статический ip или установить динамический dns с помощью dyndns.com –

ответ

3

Предположительно машина, которую вы пытаетесь достичь, находится за маршрутизатором/устройством NAT. Другими словами, он напрямую не связан с Интернетом.

Маршрутизатор несет ответственность за принятие решения о том, какие датаграммы могут перемещаться между частной и общедоступной сетями и куда они должны идти.

Skype, игры и онлайн-сервисы инициируют свои подключения из частной сети наружу на сервер в общедоступной сети. Исходящий сетевой трафик запускает временное правило NAT (Network Address Translation), которое позволяет возвращать дейтаграммы, возвращаемые из адресата, для маршрутизации обратно на частный хост.

Но другой входящий трафик будет заблокирован, если вы специально не установили правило в маршрутизаторе/NAT, указывающее, куда отправлять данные. Как еще он узнает, к какому адресу пересылать данные?

Таким образом, есть только три способа, которыми Вы можете общаться с машиной позади NAT маршрутизатор:

  • Он должен связаться с вами первым.
  • Кто-то должен настроить NAT/маршрутизатор для перенаправления публичного порта на личную машину.
  • Вы оба должны связаться с третьей машиной, которая выступает в качестве посредника.

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