boost::asio
库中发送数据到套接字的顺序是否有保障呢?
也就是说,我多次调用
boost::asio::async_write(socket, buffer, completionHandler)
我发现客户端似乎并没有接收到我发送的数据,出现了一些奇怪的行为,因此我希望确保这是我所期望的。请注意,我在每次写操作之间不等待完成处理程序,而是触发一堆异步写入调用,并天真地期望数据按照相同的顺序写入套接字。
Asio中的strand文档说:
当与连接关联的异步操作链条只有一个时(例如在半双工协议实现(如HTTP)中),处理程序不可能并发执行。这是一个隐式线程。
我理解这意味着使用strand不会改变任何内容,因为套接字提供了一个隐式线程。
总体上,strand文档讨论了事件处理程序的严格顺序调用。然而,我不清楚写入连接的数据是否按照我调用async_write的顺序写入。
写入套接字的数据顺序是否有保证?
async_write
的顺序将是在另一端接收数据的顺序。如果数据(使用TCP套接字)被损坏,则在其他地方存在另外一个问题。您正在发送什么类型的数据?如何接收它?如何检查其有效性? - Some programmer dude