c++ - 在 tcp 中提升 asio 异步处理程序

标签 c++ networking tcp boost-asio

也许这是一个非常简单的问题,但我没有找到答案。我使用 boost asios tcp 类来处理一个简单的字节协议(protocol)。我做了 async_read_some 并且处理程序做了一些工作。处理程序完成后,我启动另一个 async_read_some。让我们假设这个处理程序做了很多计算。处理程序工作和下一次调用 async_read_some 之间的传入数据是否有可能丢失?

最佳答案

不,您的操作系统将继续接收数据,直到其接收缓冲区/TCP 接收窗口已满。一旦接收缓冲区已满,TCP 的流量控制将确保发送方发送的数据不会超过接收方可以接收的数据量,这样就不会丢失任何数据。

参见 https://www.brianstorti.com/tcp-flow-control/一个很好的解释/例子。

https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Flow_control

关于c++ - 在 tcp 中提升 asio 异步处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56308525/

相关文章:

python - 如何在 python tcp 套接字中获取 IP ID、SEQ ID、ACK ID?

c++ - 当我在某些情况下使用模板参数时,编译器如何生成函数实例?

c++ - 对嵌套循环和数组访问的困惑

java - 通过 http 进行 RMI 或 Corba Web 流量的网络检查?

objective-c - 使用 GCDAyncSocket 将任意信息与套接字相关联

javascript - Node JS Fork TCP 客户端

c++ - 在 C++ 中使用 fstream 创建和读取/写入文件

c++ - 将 void** 转换为 T** 的问题

run 方法中的 java.io.OptionalDataException?

networking - 我想使用 P2P 构建一个去中心化的、类似 reddit 的系统。我应该基于什么现有的 p2p 库?