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 调用。

来源: