UDP - 是否可以在一次接收呼叫中接收多条消息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UDP - 是否可以在一次接收呼叫中接收多条消息?相关的知识,希望对你有一定的参考价值。

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呼叫。

资料来源:

以上是关于UDP - 是否可以在一次接收呼叫中接收多条消息?的主要内容,如果未能解决你的问题,请参考以下文章

从服务器接收多个 sendto()

仅在第一次运行时接收来自 Java 的 UDP 消息

C++ 同时接收 2 个或更多 UDP 消息

UDP 测试代码不接收消息 (C++)

多线程Udp服务器:将接收的数据重定向到线程

如何添加短信发送和接收呼叫lomgs