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循環,等待用戶過來鏈接

  結果如圖,

兩個人同時鏈接沒有問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM