SocketServer在Linux上无法工作

2 投票
3 回答
1019 浏览
提问于 2025-04-16 09:16

我写了一个简单的Python脚本,使用了SocketServer,这个脚本在Windows上运行得很好。但是当我在远程的Linux机器(Ubuntu)上执行它时,完全不工作。

#-*-coding:utf-8-*- 
import SocketServer

class MyHandler(SocketServer.BaseRequestHandler):

    def handle(self):
        data_rcv = self.request.recv(1024).strip()
        print data_rcv

myServer = SocketServer.ThreadingTCPServer(('127.0.0.1', 7777), MyHandler)   
myServer.serve_forever()

我通过SSH把它上传到远程机器,然后在远程机器上运行命令python server.py,接着用浏览器访问xxx.xxx.xxx.xxx:7777/test,可是远程机器的终端上什么都没有打印出来……有没有什么想法?

更新:问题解决了,是防火墙的问题,谢谢大家。

3 个回答

0

先试试用telnet或者nc命令,连接你的公网IP和端口,看看会得到什么回应。另外,为什么要从浏览器访问/test这个地址呢?我在代码里没看到这一部分。希望你已经处理好这个问题了。

2

你绑定的是127.0.0.1:7777,但你却试图通过服务器的外部IP(我用你的占位符 - xxx.xxx.xxx.xxx)来访问它。127.0.0.1:7777和xxx.xxx.xxx.xxx:7777是不同的端口,根据我的记忆,它们可以被不同的程序绑定。

如果这样还不行,检查一下你的防火墙,很多主机设置了防火墙,只允许少数几个你可能会用到的端口通过。

6

你把服务器绑定到了 127.0.0.1,这是本地电脑的IP地址。这意味着服务器只会接受来自同一台机器的连接;如果是其他机器发来的连接,它就不认了。

你需要把服务器绑定到你的外部IP地址,或者绑定到一个通配符地址(也就是说,不绑定到任何特定的IP地址,只绑定一个端口)。可以试试:

myServer = SocketServer.ThreadingTCPServer(('0.0.0.0', 7777), MyHandler) 

撰写回答