也许这是一个非常简单的问题,但我没有找到答案。我使用boost asios tcp类来处理简单的字节协议。我做了async_read_some并且处理程序做了一些工作。处理程序完成后,我将启动另一个async_read_some。假设此处理程序进行了大量计算。在处理程序工作和对async_read_some的下一次调用之间传入的数据是否有丢失的可能性?
答案 0 :(得分:1)
否,您的操作系统将继续接收数据,直到其接收缓冲区/ TCP接收窗口已满为止。一旦接收缓冲区已满,TCP的流控制将确保发送方发送的数据不会超过接收方能够接收的数据,并且不会丢失任何数据。
请参见https://www.brianstorti.com/tcp-flow-control/,以获取良好的解释/示例。
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Flow_control