繁体   English   中英

Boost.asio,async_read和套接字类型

[英]Boost.asio, async_read and socket kind

我有一个尝试读取的客户端/服务器应用程序。 从客户端读取时,它是异步完成的。 似乎客户端的async_read失败。

我认为我的客户端在服务器执行相应的async_write之前尝试async_read(不确定)。 所以我的问题是概念性的:

  1. 在完成对服务器端套接字的相应async_write之前,我可以进行async_read吗?
  2. 我不确定(目前无法尝试),但是似乎套接字的类型(阻塞/非阻塞)会更改1的行为。
  3. 如果我想使用非阻塞套接字,当我知道有可用数据时,如何async_read? 我正在寻找bytes_read或类似的东西吗?

非常感谢你。 由于我已经尝试了很多时间,并且我没有时间尝试进一步的实验,因此希望对我的3个问题进行确认。

  1. 在完成对服务器端套接字的相应async_write之前,我可以进行async_read吗?

是。

  1. 我不确定(目前无法尝试),但是似乎套接字的类型(阻塞/非阻塞)会更改1的行为。

很有可能,但是您不应该将套接字置于非阻塞模式。 异步I / O是第三个I / O模型,与非阻塞模式无关。

  1. 如果我想使用非阻塞套接字,当我知道有可用数据时,如何async_read?

这是一个矛盾。 异步I / O启动操作,并在完成时提供一个集合点。 该操作本身仍然处于阻塞状态,但不会阻止异步调用方。 如果要使用非阻塞套接字,则也不应尝试使用异步I / O。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM