无法使用TCP套接字python在服务器上接收多条消息
Cant receive multiple messages on server using TCP socket pyton
我是套接字的新手,并不知道如何从同一个客户端接收多条消息。我只收到第一条消息,其余的都没有。
服务器代码:
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()
communication_socket, address = server.accept()
msg = communication_socket.recv(1024).decode("utf-8")
当前代码接受新连接,然后执行单个 recv
。这就是它只获取第一个数据的原因。你需要的是多个 recv
here after accept.
... multiple messages from the same client
TCP没有消息的概念。它只是一个字节流。 send
和 recv
之间没有保证的 1:1 关系,即使在许多情况下它可能看起来像这样。因此,消息语义必须是应用程序协议的显式部分,例如用新行分隔消息,只有固定大小的消息或类似内容。
我是套接字的新手,并不知道如何从同一个客户端接收多条消息。我只收到第一条消息,其余的都没有。
服务器代码:
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()
communication_socket, address = server.accept()
msg = communication_socket.recv(1024).decode("utf-8")
当前代码接受新连接,然后执行单个 recv
。这就是它只获取第一个数据的原因。你需要的是多个 recv
here after accept.
... multiple messages from the same client
TCP没有消息的概念。它只是一个字节流。 send
和 recv
之间没有保证的 1:1 关系,即使在许多情况下它可能看起来像这样。因此,消息语义必须是应用程序协议的显式部分,例如用新行分隔消息,只有固定大小的消息或类似内容。