UDP数据包大小和碎片

UDP数据包大小和碎片,udp,Udp,假设我正在尝试使用udp套接字发送数据。如果数据很大,那么我认为数据将被分成几个包并发送到目的地 在目的地,如果有多个传入数据包,那么如何将这些分离的数据包合并到原始数据包中?我是否需要一个数据结构来保存基于发送方的所有传入udp?提前谢谢 您应该为此使用TCP。TCP用于结构化数据,这些数据需要按特定顺序到达,而不会被丢弃 另一方面,当数据包在约500毫秒后变得不相关时,将使用UDP。这用于游戏、电话等。您应该使用TCP进行此操作。TCP用于结构化数据,这些数据需要按特定顺序到达,而不会被丢弃

假设我正在尝试使用udp套接字发送数据。如果数据很大,那么我认为数据将被分成几个包并发送到目的地


在目的地,如果有多个传入数据包,那么如何将这些分离的数据包合并到原始数据包中?我是否需要一个数据结构来保存基于发送方的所有传入udp?提前谢谢

您应该为此使用TCP。TCP用于结构化数据,这些数据需要按特定顺序到达,而不会被丢弃


另一方面,当数据包在约500毫秒后变得不相关时,将使用UDP。这用于游戏、电话等。

您应该使用TCP进行此操作。TCP用于结构化数据,这些数据需要按特定顺序到达,而不会被丢弃


另一方面,当数据包在大约500毫秒后变得不相关时,将使用UDP。这用于游戏、电话等。

如果您的问题需要UDP,则您需要自己处理任何丢失、重复或无序的数据包,或者至少编写能适应这种可能性的代码


如果您负担不起丢失的数据包,那么TCP可能是比UDP更好的选择,因为它提供了开箱即用的保证。

如果您的问题需要UDP,那么您需要自己处理任何丢失、重复或无序的数据包,或者至少编写适应这种可能性的代码


如果您负担不起丢失的数据包,那么TCP可能是比UDP更好的选择,因为它提供了开箱即用的保证。

如果您只是使用单个
send()
调用在一个数据报中发送数据,那么传输层将为您完成碎片和重新组装。您所需要做的就是提供一个足够大的缓冲区来
recv()
,如果所有的片段都已到达,那么它们将被重新组装并作为单个数据报呈现给您

基本上,这是UDP为您提供的服务(其中“数据报”是由单个
send()
调用发送的单个数据块):

  • 数据报可能根本没有到达
  • 相对于其他数据报,数据报可能出现故障
  • 数据报可能多次到达
  • 如果数据报确实到达,它将是完整和正确的1
但是,如果您自己在应用程序层将数据划分为多个UDP数据报,那么您当然也将负责重新组装数据报



一,。无论如何,请使用UDP校验和所暗示的概率进行更正。

如果您只是使用单个
send()
调用在一个数据报中发送数据,则传输层将为您完成碎片和重新组装。您所需要做的就是提供一个足够大的缓冲区来
recv()
,如果所有的片段都已到达,那么它们将被重新组装并作为单个数据报呈现给您

基本上,这是UDP为您提供的服务(其中“数据报”是由单个
send()
调用发送的单个数据块):

  • 数据报可能根本没有到达
  • 相对于其他数据报,数据报可能出现故障
  • 数据报可能多次到达
  • 如果数据报确实到达,它将是完整和正确的1
但是,如果您自己在应用程序层将数据划分为多个UDP数据报,那么您当然也将负责重新组装数据报



一,。无论如何,请使用UDP校验和隐含的概率进行更正。

谢谢您的回复。我想知道数据包是否来自多个来源(发送方),那么我该如何处理?传输层也会自动处理此问题(根据源组合数据包)?@LCYSoft:是的,接收器不会组合来自不同源的多个数据报或片段。谢谢您的回复。我想知道数据包是否来自多个来源(发送方),那么我该如何处理?传输层也会自动处理此问题(根据源组合数据包)?@LCYSoft:是的,来自不同源的多个数据报或片段不会被接收器组合。