Python内置socket单独使用时不直接支持并发。Socketserver封装了socket模块和select模块,可以让服务端更方便的处理socket请求。Socketserver是python标准库的模块之一。使用方法:创建请求处理类,继承BaseRequestHandlerclass类并重写父类的handle()方法,处理传入的请求。实例化一个上述类型的类(比如TCPServer),将服务器的地址和你创建的请求处理类传递给这个TCPServer。调用serve_forever()方法来处理请求。socketserver模块用于服务器端。使用时一定要注意异常和粘包的处理。客户端可以使用socket模块来写。TCP服务器代码:importsocketserver#需要定义一个类,继承tcp相关的类socketserver.BaseRequestHandlerclassMyRequestHandle(socketserver.BaseRequestHandler):#实现handle方法,处理接收到的数据defhandle(self):#链接的对象is:self.request#客户端地址为:self.client_address)whileTrue:try:msg=self.request.recv(1024)iflen(msg)==0:break#发送消息self.request.send(msg.upper())exceptException:break#如果断开连接,关闭连接self.request.close()#服务器要做两件事#循环从半连接池中取出连接请求建立二-way与之连接,并获取连接对象s=socketserver.ThreadingTCPServer(('127.0.0.1',8888),MyRequestHandle)#处理多个请求#如果只想处理一个请求,可以使用ser.handle_request()s.serve_forever()UDP服务器代码:importsocketserverclassMyRequestHanlde(socketserver.BaseRequestHandler):defhandle(self):client_data=self.request[0]server=self.request[1]client_address=self.client_addressserver.sendto(client_data.upper(),client_address)s=socketserver.ThreadingUDPServer(("127.0.0.1",8888),MyRequestHanlde)s.serve_forever()博客地址:刘刚博客
