我正在阅读Boost Asio的文档,并说它
boost::asio::async_write_some
可能无法将所有数据传输到对等方。如果需要确保在异步操作完成之前写入所有数据,请考虑使用async_write
函数。
所以这是我的问题,在哪种情况下我们应该使用它们,确保所有数据都写得非常重要?!什么时候使用async_write_some只是这个函数在我看来没用?
答案 0 :(得分:1)
async_write
在请求 - 回复模式下非常有用。即在发送邮件后切换到阅读模式时。
但是如果您需要发送的数据多于写入缓冲区中的数据,那么是否发送整个缓冲区并不重要,因为您仍然需要发送更多数据。在这种情况下,确保发送整个缓冲区将是低效的,因为最后一个块可能比你在循环中调用async_write_some
时的情况要小,如果你去了更多的数据填充缓冲区。为了获得最佳性能,您需要确保发送缓冲区中始终有足够的数据来填充整个帧。
答案 1 :(得分:0)
当您从一个地方异步读取并写入另一个地方时,您可能只想将一些字节推送到目的地,并想知道缓冲区中何时有空间发送更多内容。您只需要使用async_write
进行上一次写入(当您知道无法发送时)