socketserver这个模块是利用IO多路复用以及多线程实现并发的,可以让服务器同时建立多个链接
原理如图
我们这样更改服务器代码
import socketserver '''需要先写上一个类继承它''' class MyServer(socketserver.BaseRequestHandler):#必须继承这个类才能实现并发 def handle(self):#每个链接建立后都会自动执行该方法 conn = self.request#这个是每个客户端的链接 conn.sendall(bytes('链接已建立', encoding='utf-8')) while True: ret_bytes = conn.recv(1024) ret_str = str(ret_bytes, encoding='utf-8') if ret_str == 'q': print(conn, '该链接终止') break conn.sendall(bytes(ret_str + ' 信息收到', encoding='utf-8')) if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',7777),MyServer) ''' 这一步操作内部帮我们创建了socket对象,只要有人链接了,会执行Myserver类的 handle方法 ''' server.serve_forever()#while循环,等待用户过来链接
结果如图,
两个人同时链接没有问题