zoukankan      html  css  js  c++  java
  • Python之利用socketserver实现并发

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

      结果如图,

    两个人同时链接没有问题

  • 相关阅读:
    编译内核开始的小问题Unable to find the Ncurses libraries
    qq for linux Ubuntu 64位兼容
    ubuntu下安装lighttpd
    搭建boa服务器
    INI file and Iniparser
    kernel常用.gitignore配置
    光谱学习
    jump to case label fpermissive
    Qt通用方法及类库5
    Qt通用方法及类库1
  • 原文地址:https://www.cnblogs.com/xiaobeibei26/p/6471346.html
Copyright © 2011-2022 走看看