流程思路
- 確定伺服器需要監聽的 IP 地址和埠
- 啟動監聽並設定最大連線數
- 讓伺服器進入主迴圈中,並等待被連線
- 當一個客戶端成功連線的時候
- 將接收到的客戶端套接字物件儲存到
client
變數中 - 將遠端連線的細節儲存到
addr
變數中
- 以
handle_client
為回撥函式建立一個新的執行緒物件,將客戶端套接字物件作為一個控制程式碼傳遞給它 - 啟動執行緒開始處理客戶端連線
import socket
import threading
bind ip = "0.0.0.0"
bind port = 9999
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(bind_ip, bind_port)
server.listen(5)
print("[*] Listening on %s:%d" % (bind_ip, bind_port))
def handle_client(client_cocket):
request = client socket.recv(1024)
print("[*] Received: %s" % request)
client_socket.send("ACK!")
client_socket.close()
while True:
client, addr = server.accept()
print("[*] Accept connection from: %s:%d" % (addr[O], addr[1]))
client_handler = threading.Thread(target=handle_client, args=(client,))
client_handler.start()
本作品採用《CC 協議》,轉載必須註明作者和本文連結