python socket多線程和多進程

在socket中,如果直接創建的話,是隻能接受一個用戶的請求
需要實現socketserver中的handle方法,可以實現多進程併發訪問

SocketServer內部使用 IO多路複用 以及 “多線程” 和 “多進程” ,從而實現併發處理多個客戶端請求的Socket服務端。即:每個客戶端請求連接到服務器時,Socket服務端都會在服務器是創建一個“線程”或者“進 程” 專門負責處理當前客戶端的所有請求。

1、創建一個繼承自 socketserver.BaseRequestHandler 的類,類中必須定義一個名稱爲 handle 的方法
2、啓動ThreadingTCPServer

import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        conn = self.request
        conn.sendall("我是一個多線程".encode())
        Flag = True
        while Flag:
            data = conn.recv(1024)
            if data.decode() == "exit":
                Flag = False
            conn.sendall(data)

if __name__ == "__main__":
    server = socketserver.ThreadingTCPServer(('127.0.0.1',8009),MyServer)
    server.serve_forever()
客戶端直接使用原來的客戶端代碼即可。

ThreadingTCPServer
ThreadingTCPServer實現的Soket服務器內部會爲每個client創建一個 “線程”,該線程用來和客戶端進行交互。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章