【发布时间】:2017-06-03 19:33:15
【问题描述】:
通过TCP套接字编程: 在我的应用程序中,接收方使用一个小缓冲区然后传输数据。所以 recv() 被调用了几次,直到收到所有数据。在每次调用 recv() 时,使用的缓冲区都会被复制到另一个大缓冲区或部分附加到文件中。
我的问题是,我应该在我的代码中额外处理接收到的 TCP“数据包顺序”,还是 TCP 在后台在自己的缓冲区中处理它?因为传输的 TCP 数据包到达接收端的顺序不正确。
【问题讨论】:
-
TCP 确保数据按照发送顺序到达。如果您观察到其他情况,则说明您的代码中某处存在错误。
-
对于 TCP 新手来说,一个常见的误解是他们期望 messaging(即,在一端对 Send 的每次调用都会与另一端对 Receive 的调用相匹配)。如果这就是你认为你得到的,也许你只是误解了你所看到的“数据包乱序到达”,正如其他人所提到的,这不会发生。