我对如何在asio中读取流中的数据感到困惑。我的主要问题是:
感谢。
答案 0 :(得分:4)
如果一台计算机同时进行多次异步写入,并且接收计算机上只有一次异步读取,会发生什么情况。通过TCP协议,数据是否有可能交错?
如果在正在进行另一个异步写入操作时调用async_write
,则结果是未定义的。它类似于在两个不同线程的同一个套接字上同时进行两个write()
系统调用。你可能会弄得一大堆数据。
ASIO库如何知道何时调用处理读取流中处理新数据的处理程序?它会调用每个收到的字节吗?当客户端断开连接时?
如果您拨打async_read
,则会在收到所有请求的数据量时调用回叫。如果你调用async_read_some
,它会在至少有一个字节时调用回调,但可能更多。可能是另一端发送的单个TCP数据包的内容。
是否有使用流的好(和简单)示例,而不是使用asio从tcp套接字读取缓冲区?
你的意思是asio::iostream
? asio文档中有examples。