好吧,在任何人问起之前,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碎片?
发布于 2013-04-26 07:41:33
不不可能。UDP数据报被完整和完整地传送,或者根本不传送。您不必担心交错或重新组装。您所要担心的就是无法交付、重复交付和无序交付;-)
如果您认为您看到的是碎片,那么您实际上看到的是代码中的编程错误。
https://stackoverflow.com/questions/16226424
复制相似问题