UDP - 是否可以在一个接收呼叫中接收多条消息?
UDP - is it possible to receive multiple messages in one receive call?
1。是否可以在一个接收调用中接收多条消息?
发件人伪代码:
target = ("xxx.xxx.xxx.xxx", 1234)
sender = new_udp_socket()
sender.send("Hello", target)
sender.send("World", target)
接收方伪代码:
receiver = new_udp_socket()
receiver.bind("", 1234)
while true
data = receiver.recvfrom(512)
print(data)
接收方是否有可能在一次接收调用中接收到 "HelloWorld"
而不是分别接收 "Hello"
和 "World"
?
有人告诉我 可能,但我想确认一下。
2。如果可以在一个接收调用中接收多条消息,我如何确保我的代码分别处理这两条消息?
我一直在想这个问题,但想不出任何解决办法。
我的第一个想法是在发送调用的开头添加一个字节,说明消息的长度。
我也不认为这是可靠的,因为如果接收器缓冲区中的数据过多,那么开头(消息长度)可能会被截断,因此我的程序会失败。
感谢您的帮助!
经过大量研究,我找到了问题的答案。
一个 recvfrom 调用只会收到一个 sendto 调用。
来源:
1。是否可以在一个接收调用中接收多条消息?
发件人伪代码:
target = ("xxx.xxx.xxx.xxx", 1234)
sender = new_udp_socket()
sender.send("Hello", target)
sender.send("World", target)
接收方伪代码:
receiver = new_udp_socket()
receiver.bind("", 1234)
while true
data = receiver.recvfrom(512)
print(data)
接收方是否有可能在一次接收调用中接收到 "HelloWorld"
而不是分别接收 "Hello"
和 "World"
?
有人告诉我 可能,但我想确认一下。
2。如果可以在一个接收调用中接收多条消息,我如何确保我的代码分别处理这两条消息?
我一直在想这个问题,但想不出任何解决办法。
我的第一个想法是在发送调用的开头添加一个字节,说明消息的长度。
我也不认为这是可靠的,因为如果接收器缓冲区中的数据过多,那么开头(消息长度)可能会被截断,因此我的程序会失败。
感谢您的帮助!
经过大量研究,我找到了问题的答案。
一个 recvfrom 调用只会收到一个 sendto 调用。
来源: