Python高階 用多執行緒實現TCP服務端

2021-08-27 15:57:01 字數 1780 閱讀 3418

需求

1.建立乙個tcp伺服器接收服務端傳送的資訊並給予答覆

2.以多執行緒方式實現接收客戶端資訊

3.間客戶端傳送的資訊解碼輸出

思路分析

1.建立乙個tcp客戶端套接字

2.寫乙個接收訊息的方法,可以接收客戶端訊息並解碼輸出

3.客戶端被動監聽,每有乙個客戶端連線就建立乙個子執行緒執行接收訊息方法

**實現

# 匯入模組

import socket

import threading

# 接收訊息

defrecv

(client_socket, ip_port):

while

true:

client_text = client_socket.recv(1024)

# 如果接收的訊息長度不為0,則將其解碼輸出

if client_text:

print("[客戶端訊息]", ip_port, ":", client_text.decode("gbk"))

# 給客戶端響應

client_socket.send("收到\n".encode())

# 當客戶端斷開連線時,會一直傳送''空字串,所以長度為0已下線

else:

print("客戶端", ip_port, "已下線")

client_socket.close()

break

# 程式主入口

defmain

():# 建立tcp套接字

tcp_socket = socket.socket(socket.af_inet, socket.sock_stream)

# 設定埠復用

tcp_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr, true)

# 繫結埠

tcp_socket.bind(("", 8080))

# 設定為被動監聽狀態,128表示最大連線數

tcp_socket.listen(128)

while

true:

# 等待客戶端連線

client_socket, ip_port = tcp_socket.accept()

print("[新客戶端]:", ip_port, "已連線")

# 有客戶端連線後,建立乙個執行緒將客戶端套接字,ip埠傳入recv函式,

t1 = threading.thread(target=recv, args=(client_socket, ip_port))

# 設定執行緒守護

t1.setdaemon(true)

# 啟動執行緒

t1.start()

if __name__ == '__main__':

main()

執行結果接收客戶端訊息

響應客戶端訊息

客戶端下線後識別

python高階 多執行緒

1.1 獲取執行緒數 import threading import time def fun time.sleep 1 print hello t threading.thread target fun t.start print threading.enumerate while true le...

Python高階(多執行緒)

多執行緒結構 import threading def worker 子執行緒要執行的具體邏輯 函式 print threading t1 threading.current thread time.sleep 9 通過休眠模擬子執行緒非同步邏輯 print t1.getname new t thr...

Python高階 多執行緒 05 執行緒

併發 時間段內多個程式輪流執行 並行 同乙個時刻不同cpu同時執行 執行緒 程式執行中,執行 的乙個分支。每個執行至少都有乙個執行緒.執行緒是作業系統排程資源的基礎單位 1.建立 import threading 方法 thread group 執行緒組,目前只能使用none target 執行的目...