linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Linux基础建设 >

Python之利用socketserver实现并发

时间:2017-05-09  来源:未知  作者:linuxsir首页

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循环,等待用户过来链接

  结果如图,

两个人同时链接没有问题

友情链接