1. 程式人生 > >socketserver實現併發

socketserver實現併發

一、socketserver

    基於tcp,使用socketserver,可以實現一個服務端與多個客戶端通訊。

  • 基於tcp的套接字,關鍵就是兩個迴圈,一個連結迴圈,一個通訊迴圈
  • socketserver模組中分為兩大類:server類(解決連結問題)和request類(解決通訊問題)

完整的socketserver程式碼示例:

服務端:

import socketserver


class Myserver(socketserver.BaseRequestHandler):

    def handle(self):
        
while 1: from_client_msg = self.request.recv(1024) print(from_client_msg.decode("utf-8")) server_msg = input("服務端>>>") self.request.send(server_msg.encode("utf-8")) if __name__ == '__main__': ip_port = ("127.0.0.1", 8001) server = socketserver.ThreadingTCPServer(ip_port, Myserver) server.serve_forever()
server端

客戶端:

import socket


client = socket.socket()
client.connect(("127.0.0.1", 8001))

while 1:
    client_data = input("客戶端>>>")
    client.send(client_data.encode("utf-8"))

    from_server_msg = client.recv(1024)
    print(from_server_msg.decode("utf-8"))
client端

    此時即可在一個服務端下,執行多次客戶端程式,實現同時與服務端通訊。

二、socketserver原始碼分析