加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python之借助socketserver实现并发

发布时间:2021-11-15 15:19:25 所属栏目:教程 来源:互联网
导读:socketserver这个模块是利用IO多路复用以及多线程实现并发的,可以让服务器同时建立多个链接 原理如图 我们这样更改服务器代码 import socketserver 需要先写上一个类继承它 class MyServer(socketserver.BaseRequestHandler):#必须继承这个类才能实现并发 d

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循环,等待用户过来链接
 
  结果如图,
 
 
 
两个人同时链接没有问题

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读