我正在使用ThreadedTCPServer来启动TCP服务器。这是代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import threading
import SocketServer
import time
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
recv1 = self.request.recv(1)
print "server: %s" % recv1
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
server = ThreadedTCPServer(('0.0.0.0', 8080), ThreadedTCPRequestHandler)
print server.server_address
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
print "Server loop running in thread:", server_thread.name
time.sleep(30)
server.shutdown()
print "end"
我正在使用Windows7(IP:192.168.1.180)/Python2.7,启动程序时,我可以从本地telnet服务器,但是从另一台机器上,我无法telnet成功。
> telnet 192.168.1.180 8080
但是,我在Linux上运行该程序,它工作正常。我可以从另一台机器成功远程登录。
为什么在Windows7上它无法接收远程连接?我在运行期间检查了windows7上的网络状态:
C:\Users\Henry>netstat -ant | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING InHost
抱歉,问题解决了。这是一个环境问题。它被Windows7防火墙阻止。
答案 0 :(得分:1)
您的程序似乎正在正确地监听连接。从超级用户的堆栈交换看这篇文章,看来你的配置是正确的。看到: https://superuser.com/questions/386436/the-meaning-of-port-0-in-netstat-output
如果您的脚本在一个地方而不是另一个地方工作,我会看一下环境差异。由于您的客户端无法连接到服务器,我猜你会得到某种连接拒绝错误。
您的Windows防火墙(或其他第三方防火墙)是否阻止端口8080上的入站连接?这似乎很可能因为它是Web服务器常用的端口。