2

python 2.7.2 windows 7 32位

让我以我对网络编程相当陌生来开始这个问题。我使用 python 的内置 SocketServer 创建了一个简单的服务器和客户端

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

当主机是“localhost”并且客户端和服务器在同一台机器上时,这可以正常工作。但是我希望能够通过互联网访问服务器。我的电脑在路由器后面。我正在使用 pystun(如下)来确定我的计算机公共 IP 地址,但无法连接。我做了一些研究,据我了解,当程序打开一个端口时,路由器会识别出该端口并将流量转发到该计算机。这似乎没有发生。我在禁用防火墙的情况下得到相同的结果。我需要使用端口转发吗?大多数应用程序如何能够从路由器后面进行通信?我在这里查看了打孔器以下来源)和通过 win32com 进行的端口转发. 我正在寻找可以为我指明正确方向的人。如何以编程方式让服务器从路由器后面打开侦听端口并将流量转发给它?

打孔器来源:https: //coherence.beebits.net/svn/trunk/Puncher/puncher/base.py pystun:http ://pypi.python.org/pypi/pystun

4

2 回答 2

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

我已经使用这个脚本很长时间了,它显然是在 perl 中,所以你可以按原样使用它,或者将它移植到 python。

FWIW,我一直想将它移植到 python,所以如果你想要帮助,请联系我(github 上的richoH)

于 2012-01-23T01:47:43.477 回答
0

这(端口转发)需要在路由器上设置。由于路由器后面(可能)有几个设备,它需要知道将进入端口 80(或其他)的流量转发到哪个设备。

于 2012-01-23T01:42:52.017 回答