我是网络编程的新手,所以请耐心等待。我在boost文档中找不到任何相关内容。使用asio :: async_read时,如果没有要从套接字读取的数据,则会引发文件结束错误(至少,我认为确实如此)。有没有办法实现某种检查来防止这种行为?我想要的是:有没有办法等待数据存在,然后读取所述数据并调用处理程序? (如果措辞不当,请说出来。我会尽力澄清。)
答案 0 :(得分:3)
当套接字的另一端关闭时,使用asio :: async_read时,结束 没有时会引发文件错误 要从套接字读取的数据
eof
返回,而不是在没有数据要读取时。
我想要的是:在那里 任何等待数据的方式 目前,然后读取所述数据和 打电话给处理程序?
这称为轮询,这就是asio io_service
为你做的事情。您通过发起io_service
告诉async_read
您要从套接字读取数据。它代表您执行读取,并在成功完成或失败时调用完成处理程序。
在Boost.Asio提供的异步和同步方法之间study the differences可能值得花时间。