0

好的,在任何人问之前,TCP 不是一个选项。

所以,我正在通过 UDP 发送一些消息。每条消息的开头都有一个 4 字节长度的字段。到目前为止,我一直在使用这个字段来确定我是否有完整的消息。

但我想知道,如果我有两条大消息,足够大以至于它们都像这样分散:

Message 1
Length 1 | Fragment 1-1 | Fragment 1-2 | Fragment 1-3

Message 2
Length 2 | Fragment 2-1 | Fragment 2-2 | Fragment 2-3

我一个接一个地发送,是否可以像这样交错发送它们:

Length 1 | Length 2 | Fragment 1-1 | Fragment 2-1 | Fragment 1-2 | Fragment 2-2 | Fragment 1-3 | Fragment 2-3

如果是这样,如果我无法控制消息的分段方式,我怎么可能重新组装这些?

编辑:另外..我只是想到UDP可能不会分段,而我看到的“分段”可能来自.receive()使用固定大小的缓冲区调用该方法。所以也许这甚至不是问题。谁能确认UDP是否碎片?

4

1 回答 1

3

不,这是不可能的。UDP 数据报被完整、完整地传送或根本不传送。您不必担心交错或重组。您只需要担心不发货、重复发货和乱序发货 ;-)

如果您认为您看到的是碎片,那么您实际上是在您的代码中看到了一个编程错误。

于 2013-04-25T23:41:33.160 回答