read_some()超时

时间:2013-03-12 19:02:23

标签: c++ timeout boost-asio tcpclient

我正在构建一个基于Boost :: ASIO lib的TCP客户端。我使用Boost的read_some()来读取服务器的响应。我想在其中实现一个超时逻辑,如果10秒内没有通信,则发送“ping”命令。问题是

l=_socket->read_some(boost::asio::buffer(this->reply,sizeof(this->reply)),error);
当没有数据要传输到读缓冲区时,

似乎会阻止程序执行。那有什么办法吗?我不想使用async_read_some(),因为如果没有数据传输到缓冲区我需要这个线程休眠,这很容易在read_some()中完成,因为它返回数据的大小转移。 主要的是即使在超时期间我也不想关闭连接,而是检查服务器是否响应ping命令,如果不是,我会转移到重新连接。因此,当一段时间内没有数据传输时,这或多或少会检查服务器是否仍然连接。

0 个答案:

没有答案