SocketServer在Linux上无法工作
我写了一个简单的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)