好的,在有人要求之前,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片段吗?
答案 0 :(得分:3)
不,不可能。 UDP数据报是完整的,完整的或根本不传递。您不必担心交错或重组。您需要担心的是未送货,重复送货和无序送货; - )
如果您认为自己看到了碎片,那么您的代码中确实会看到编程错误。