1

我正在尝试在我的服务器上运行一个简单的 TCP 服务器。我在Twisted 示例页面上使用 echoserv.py 和 echoclient.py 。当我在服务器上运行 echoserv.py 时,我可以使用 echoclient.py 中的以下内容进行正常连接:

reactor.connectTCP('localhost', 8000, factory) <- for a localhost connection
reactor.connectTCP('192.168.0.250', 8000, factory) <- for a lan connection

但是当我尝试通过 Internet 远程连接时,我在 echoclient.py 中使用以下行:

reactor.connectTCP('mydomain.com', 8000, factory)

但是,当我尝试运行 echoclient.py 时,会出现暂停,然后我得到:

connection failed: User timeout caused connection failure.

我知道它正在对我的域做一些事情,因为当我做一个随机域时,我得到:

connection failed: Connection was refused by other side: 111: Connection refused.

我的所有端口都为端口 8000 正确配置,而且我确定不是我的 ISP 阻止了这些端口(我可以一直使用随机端口与其他应用程序一起使用)。我也尝试过使用 8000 以外的端口,但无济于事。如果有帮助,这是我的路由器页面中的端口转发线:

[X] tcp_server            192.168.0.250 TCP 8000/8000    always   edit delete

知道为什么会这样吗?

4

2 回答 2

4

当您对路由器进行编程以将输出连接端口转发到入站服务器时,它实际上仅在客户端(尝试连接的客户端)真正位于您的网络之外,真正来自云时才有效。你,从你的网络内部,不能使用它,它对你不起作用。你会觉得它不起作用,但它确实起作用。至少对于外面的人来说。

在 Google 上搜索Port Forwarding Tester 以证明这一点。这个(谷歌的第一个结果)工作得很好:http ://www.yougetsignal.com/tools/open-ports/

于 2009-08-22T04:12:30.410 回答
1

您是否尝试过以下操作?

  1. 对运行服务器的机器的 IP 进行端口扫描,以确认端口已打开。一个简单的 [google search][1] 会给你很多选择。
  2. 如果显示端口已打开,请尝试通过 telnet 而不是扭曲的客户端脚本进行远程连接。某些系统防火墙会阻止应用程序级别(例如 Windows XP),并且可能会在您没有意识到的情况下阻止您的传出连接。
于 2009-08-22T04:20:12.377 回答