需求
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 執行的目...