2012-01-23 3 views
2

питон 2.7.2 окна 7 32 битСоздание общедоступного TCPServer из-за маршрутизатором

Позвольте мне предварить этот вопрос с я довольно новыми для сетевого программирования. Я создал предопределённые SocketServer простой сервер и клиент, использующий питона

SocketServer.ThreadingTCPServer((host, port), Handler) 

Это прекрасно работает, когда хост «локальный» и клиент и сервер находятся на одной машине. Однако я хочу иметь доступ к серверу со всего Интернета. Мой компьютер находится за маршрутизатором. Я использую pystun (ниже) , чтобы определить общедоступный IP-адрес моих компьютеров, но я не могу подключиться. Я провел несколько исследований, и я понимаю, что когда программа открывает порт, маршрутизатор распознает этот и перенаправляет трафик на этот компьютер. Кажется, это не происходит. Я получаю тот же результат с отключенным брандмауэром. Нужно ли использовать переадресацию портов? Как большинство приложений могут общаться из-за маршрутизатора? Я просмотрел puncher (источник ниже) и переадресацию портов через win32com here. Я ищу, чтобы кто-то указал мне в правильном направлении. Как программным способом сервер открывает порт прослушивания из-за маршрутизатора и перенаправляет его на него?

источник перфоратор: https://coherence.beebits.net/svn/trunk/Puncher/puncher/base.py pystun: http://pypi.python.org/pypi/pystun

+0

возможно дубликат [Python и сокеты + UPnP] (HTTP : //stackoverflow.com/questions/717687/python-and-sockets-upnp) – sarnold

+0

Многие, но не все, поддержка маршрутизаторов [обход UPnP NAT] (http://en.wikipedia.org/wiki/Upnp#NAT_traversal) , Для тех, кто это делает, это может быть решением. Для тех, кто этого не делает, вы можете попросить администратора вежливо передать его вам. :) – sarnold

+0

Я прочитал обход NAT. Есть ли у вас примеры кода, использующие этот принцип? – user2682863

ответ

0

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

1
lafibre.info/download/upnp/igdctl.pl 

Я использую этот скрипт для возрастов, это, очевидно, в Perl, так что вы можете использовать его как есть, или портировать его на Python.

FWIW, я был смысл портировать его на питона некоторое время теперь, так что если вы хотите руку, свистеть меня (richoH на GitHub)

+0

Да, было бы здорово переносить это на python. К сожалению, я не говорю perl. Я смотрю на это прямо сейчас в блокноте. – user2682863

+0

Если кто-то действительно собирается его использовать, это мотивирует меня. Я посмотрю, смогу ли я найти время сегодня вечером и пинговать тебя здесь, если я подберусь к нему. – richo

+0

звучит отлично. Я пытаюсь выбрать его, но его трудно без разрыва строки. – user2682863

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

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