我们已经学会了socket去写服务端了...但是,socket只能一对一的去跟客户端去链接..多个用户就只能等待前一个用户断开,用户体验很不好..
其实很简单,socketserver大多都是固定写法
1 import socketserver 2 class Server(socketserver.BaseRequestHandler): # 创建一个服务器类,继承父类socketserver.BaseRequestHandler 3 def handle(self): 4 # 固定写法,运行时,每个客户端对象会运行此方法,如果没有,就会执行父类BaseRequestHandler中handle方法 5 msg = self.request.recv(1024).decode() 6 print(msg) 7 answer = input("请输入信息:").encode() 8 self.request.send(answer) 9 10 11 if __name__=="__main__": 12 server = socketserver.ThreadingTCPServer(("127.0.0.1",9999),Server) 13 # 创建多个并发对象,将本地服务器IP及所创建的服务器类类名传入 14 server.serve_forever() 15 # 一直执行此对象
这样,一个简单的并发服务器就完成了,,可以与多个客户端,进行简单的收发消息操作
实际上socketserver执行原理和socket是一样的,只是为每个客户端创建一个对象去执行而已..
简单看看源码:
1 在父类中为对象封装属性,,将我们传入的地址,和类名传入.创建socket对象,并运行绑定和监听
2 绑定和监听的实现方法
3 接下来运行对象中,我们定义的handle方法,,每次连接创建不同的对象,所以可以实现并发
所以,如果handle名称不一致,会运行父类的handle,而pass
上面就是socketserver的实现步骤了..