我正在构建一个基于 Boost::ASIO lib 的 TCP 客户端。我使用read_some()
Boost 从服务器读取响应。我想在其中实现一个超时逻辑,如果 10 秒内没有通信,它会发送一个“ping”命令。问题是
l=_socket->read_some(boost::asio::buffer(this->reply,sizeof(this->reply)),error);
当没有数据要传输到读取缓冲区时,似乎会阻止程序执行。那么有没有办法摆脱呢?我不想使用,async_read_some()
因为如果没有数据传输到缓冲区,我需要这个线程休眠,这很容易完成,read_some()
因为它返回传输的数据大小。主要的是即使在超时期间我也不想关闭连接,而是检查服务器是否响应 ping 命令,如果没有,我会重新连接。因此,当在一段时间内没有数据传输时,这或多或少会检查服务器是否仍然连接。