我正在努力掌握boost asio,但我很难理解异步接口背后的一些行为。
我有一个简单的客户端和服务器设置。 - 客户端定期调用async_write发送固定数量的数据。 - 服务器定期轮询数据。 - 当服务器停止轮询数据时会发生什么?
我猜服务器操作系统中的各个缓冲区会填满,并且会停止发送ACK包? 无论发生什么,似乎客户端都可以愉快地继续发送数千兆字节的数据,而不接收任何错误回调(当然也不接收任何成功回调)。 我假设客户端操作系统在某个点上停止接受数据包,因为它们不能被发送? 这是否意味着boost :: asio内部缓冲数据? 如果是,请问我能使用socket.cancel()来放弃数据包,以防我不想等待传输?(我需要确保ASIO忘记我的数据包,以便我可以将旧缓冲区重用于新数据包)。
我有一个简单的客户端和服务器设置。 - 客户端定期调用async_write发送固定数量的数据。 - 服务器定期轮询数据。 - 当服务器停止轮询数据时会发生什么?
我猜服务器操作系统中的各个缓冲区会填满,并且会停止发送ACK包? 无论发生什么,似乎客户端都可以愉快地继续发送数千兆字节的数据,而不接收任何错误回调(当然也不接收任何成功回调)。 我假设客户端操作系统在某个点上停止接受数据包,因为它们不能被发送? 这是否意味着boost :: asio内部缓冲数据? 如果是,请问我能使用socket.cancel()来放弃数据包,以防我不想等待传输?(我需要确保ASIO忘记我的数据包,以便我可以将旧缓冲区重用于新数据包)。