[英]check incoming type of data with socket.recv
我需要我的程序知道來自客戶端的消息是數字,因此是 int 或 float,還是字符串。
到現在為止,我的程序是這樣的:
def handle_client_text(conn, addr):
print(f"[NEW CONNECTION] {addr} connected.")
connected = True
while connected:
msg_lenght = conn.recv(HEADER).decode(FORMAT)
if msg_lenght:
msg_lenght = int(msg_lenght)
msg = conn.recv(msg_lenght).decode(FORMAT)
if msg == DISCONNECT_MESSAGE:
connected = False
conn.close()
print ("disconnecting")
print(f"[{addr}] {msg}")
sleep(0.001)
def start():
server.listen()
print(f"[LISTENING] Server is listening on {SERVER}")
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client_text, args=(conn, addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")
我需要它可以接收字符串以外的數字,並且如果它是數字或字符串,它會以不同的方式運行。
此處未定義的每個變量都在代碼的另一部分中定義。
通過套接字傳入的數據是字節形式,當你decode()
時它變成一個字符串,如果你分別用int()
或float()
轉換它,它就會變成 int 或 float。
因此,如果您想根據其數據類型使用不同的邏輯,您應該檢查所有數字/點或字母數字字符以在數字和字符串數據類型之間進行分類。 或者,如果您可能必須將"12"
視為字符串而不是 int,請將數據類型作為元數據從客戶端發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.