从rou后面创建一个公共可用的TCPServer

2024-04-29 13:00:41 发布

您现在位置:Python中文网/ 问答频道 /正文

python 2.7.2 windows 7 32位

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

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

当主机是“localhost”并且客户机和服务器在同一台机器上时,这种方法可以很好地工作。 但是我希望能够通过互联网访问服务器。我的电脑在路由器后面。我用的是pystun(下图) 确定我的计算机的公共ip地址,但无法连接。我做了一些研究,据我所知,当一个程序打开一个端口时,路由器会识别这个端口并将流量转发给那台计算机。这似乎没有发生。当防火墙被禁用时,我也会得到同样的结果。我需要使用端口转发吗?大多数应用程序是如何从路由器后面进行通信的?我研究了puncher(源代码如下)和通过win32com here的端口转发。我在找人给我指明方向。如何通过编程让服务器从路由器后面打开侦听端口并将流量转发给它?在

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


Tags: 端口网络服务器pypi客户机windows编程计算机
2条回答

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

lafibre.info/download/upnp/igdctl.pl

我已经使用这个脚本很长时间了,它显然是用perl编写的,所以您可以按原样使用它,也可以将它移植到python。在

FWIW,我想把它移植到python已经有一段时间了,所以如果你想帮忙的话,ping我(github上的richoH)

相关问题 更多 >