首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一般boost asio流读取问题

问一般boost asio流读取问题
EN

Stack Overflow用户
提问于 2010-01-02 04:54:07
回答 1查看 2.5K关注 0票数 2

我对asio中如何将数据读入流感到有点困惑。我的主要问题是:

  1. 如果同一台计算机同时进行多个异步写入,而接收计算机上只有一个异步读取,则会发生什么情况。在TCP协议上,数据是否有可能被交织?
  2. ASIO库如何知道何时调用处理读流中新数据的处理程序?它会调用每个接收到的字节吗?当客户断开连接的时候?
  3. 有什么好的(简单的)示例使用流,而不是使用asio从tcp套接字读取缓冲区?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-02 05:26:30

如果同一台计算机同时进行多个异步写入,而接收计算机上只有一个异步读取,则会发生什么情况。在TCP协议上,数据是否有可能被交织?

如果在另一个异步写入操作正在进行时调用async_write,则结果未定义。这类似于在来自两个不同线程的同一个套接字上同时执行两个write()系统。你可能会把数据搞得一团糟。

ASIO库如何知道何时调用处理读流中新数据的处理程序?它会调用每个接收到的字节吗?当客户断开连接的时候?

如果您调用async_read,当收到所有请求的数据量时,它将调用回调。如果您调用async_read_some,它将在至少有一个字节时调用回调,但可能会更多。可能是另一端发送的单个TCP数据包的内容。

有什么好的(简单的)示例使用流,而不是使用asio从tcp套接字读取缓冲区?

你是说asio::iostream?在asio文档中有示例。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1990645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档