我正在尝试使用 socketserver 创建一个简单的服务器,以通过 TCP 将图像发送到客户端。首先我向客户端发送一个目录,然后它响应一个请求。
在我的服务器的句柄中,我有这个循环:
class MainHandler(socketserver.BaseRequestHandler):
def handle(self):
while 1:
try:
# Sending the catalogue
# Using my methods to get my catalogue with a HTTP header
response = self.server.genHTTPRequest(self.server.init.catalogue)
self.request.sendall(response.encode())
# Response of the client
self.data = self.request.recv(1024).decode()
if self.data:
print("Data received : {}".format(self.data))
except:
print("transmission error")
break;
我主要使用这一行来创建我的服务器(它在另一个文件中):
mainServer = MainServer.MainServer((init.adresse, int(init.port)), MainServer.MainHandler)
当我启动这个程序时,客户端连接成功并接收到目录,但它只发回一些数据并且程序跳转到 try/catch 的异常中。没有 try/catch,我得到了这个错误:
self.data = self.request.recv(1024).decode()
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
我不明白是什么问题,可能是同步丢失或者我可能需要使用线程?
谢谢您的帮助
(我正在使用python 3.3)