1. 程式人生 > >python3.6入門到高階(全棧) day29 socketserver實現服務端和多個客戶端通訊

python3.6入門到高階(全棧) day29 socketserver實現服務端和多個客戶端通訊

 什麼是socketserver?

     TCP協議下的socket實現了服務端一次只能和一個客戶端進行通訊, 而socketserver實現了服務端一次能和多個客戶端進行通訊, 底層呼叫的還是socket.

import socketserver

class MyServer(socketserver.BaseRequestHandler):

    # self.request             相當於建立一個通訊通道 conn

    """
    繼承BaseRequestHandler, 例項化類時要執行
    def __init__(self, request, client_address, server):
    self.request = request
    self.client_address = client_address
    self.server = server
    self.setup()
    try:
        self.handle()
    finally:
        self.finish()
    
""" def handle(self): # 方法名字必須是 handle, 得和原始碼一樣, 不能變 while 1: print(str(self.request.recv(1024),"utf8")) self.request.send(bytes(input("服務端傳送資訊>>>>>"),"utf8")) if __name__ == "__main__" : ip_port = ("127.0.0.1", 8900) # 例項化一個socket物件,並封裝了IP和埠,以及自己定義的類. 這一步完成了server物件兩個內容: bind IP和埠, listen 排隊的數量
server = socketserver.ThreadingTCPServer(ip_port,MyServer) # 呼叫serve_forever方法, 建立通訊通道, 原始碼(request, client_address = self.get_request(), self.get_request方法就是 # server物件 accept() 的過程, ) 在這一步開啟多執行緒應對併發, 並進入處理通訊部分, 例項化 Myserver類, 並執行handle方法(看原始碼) server.serve_forever()