SocketServer不能在Linux上运行

2024-06-17 13:26:12 发布

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

我用SocketServer编写了一个简单的python脚本,它在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,并尝试用我的浏览器访问{},但是远程机器的终端上没有打印任何内容……有什么想法吗?在

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


Tags: importself脚本机器data远程ubuntulinux
3条回答

您绑定到127.0.0.1:7777,但随后尝试通过服务器外部IP访问它(我将使用您的占位符-xxx.xxx.xxx.xxx)。127.0.0.1:7777和xxx.xxx.xxx.xxx:7777是不同的端口并且可以被不同的进程IIRC绑定。在

如果这还不能解决这个问题,检查一下你的防火墙,很多主机都设置了防火墙,除了你可能使用的那一小部分之外,其他所有东西都会被屏蔽

您正在将服务器绑定到127.0.0.1,本地主机的IP地址。这意味着服务器将只接受来自同一台机器的连接;它不会识别来自另一台机器的连接。在

您需要绑定到您的外部IP地址,或者绑定到一个通配符地址(即,不要绑定到任何特定的IP地址,只绑定一个端口)。尝试:

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

先用telnet或nc试试,用你的端口telnet到你的公共ip,看看你得到了什么响应。另外,为什么要从浏览器访问/测试?我在代码里没看到那部分。我希望你已经处理好了。在

相关问题 更多 >