如果一台计算机同时进行多个异步写入,而接收计算机上只有一个异步读取,会发生什么情况?在TCP协议中,数据是否有可能被交错存取?
如果你打电话
async_write
当另一个异步写操作正在进行时,结果是未定义的。类似于同时进行两次
write()
来自两个不同线程的同一套接字上的系统调用。你可能会把大数据搞得一团糟。
ASIO库如何知道何时调用处理读取流中新数据的处理程序?它会调用每个接收到的字节吗?客户机何时断开连接?
如果你打电话
async_read
,它将在收到所有请求的数据量时调用回调。如果你打电话
async_read_some
,它将在至少有一个字节时调用回调,但可能更多。可能是另一端发送的单个TCP包的内容。
有没有好的(和简单的)使用流的例子,而不是使用ASIO从TCP套接字读取缓冲区?
你的意思是
asio::iostream
?有
examples
在ASIO文档中。