我是套接字的新手,并不真正知道如何從同一個客戶端接收多條訊息。我只收到第一條訊息,沒有收到其余訊息。
服務器代碼:
import socket
IP = "127.0.0.1"
PORT = 65432
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((IP, PORT))
server.listen()
while True:
communication_socket, address = server.accept()
msg = communication_socket.recv(1024).decode("utf-8")
print(msg)
客戶端代碼:
import socket
import time
HOST = "127.0.0.1"
PORT = 65432
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect((HOST, PORT))
socket.send("success".encode("utf-8"))
time.sleep(2)
socket.send("?".encode("utf-8"))
socket.close()
uj5u.com熱心網友回復:
communication_socket, address = server.accept()
msg = communication_socket.recv(1024).decode("utf-8")
當前代碼接受新連接,然后執行單個recv. 這就是為什么它只獲取第一個資料。recv接受后你需要的是多個。
...來自同一個客戶端的多條訊息
TCP 沒有訊息的概念。它只是一個位元組流。send和之間沒有保證的 1:1 關系recv,即使它在許多情況下可能看起來像這樣。因此訊息語意必須是應用程式協議的顯式部分,例如用新行分隔訊息,只有固定大小的訊息或類似的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377926.html
