питон 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
возможно дубликат [Python и сокеты + UPnP] (HTTP : //stackoverflow.com/questions/717687/python-and-sockets-upnp) – sarnold
Многие, но не все, поддержка маршрутизаторов [обход UPnP NAT] (http://en.wikipedia.org/wiki/Upnp#NAT_traversal) , Для тех, кто это делает, это может быть решением. Для тех, кто этого не делает, вы можете попросить администратора вежливо передать его вам. :) – sarnold
Я прочитал обход NAT. Есть ли у вас примеры кода, использующие этот принцип? – user2682863