Python之利用socketserver实现并发
socketserver这个模块是利用IO多路复用以及多线程实现并发的,可以让服务器同时建立多个链接
原理如图
我们这样更改服务器代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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循环,等待用户过来链接 |
结果如图,
两个人同时链接没有问题
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步