我有2个案例:
- 客户端连接,不发送字节并等待服务器响应。
- 客户端连接,发送超过 1 个字节并等待服务器响应。
接下来是问题:在第一种情况下,我不应该读取任何字节并获得一些服务器响应。在第二种情况下,我应该至少读取 1 个字节,然后我才会得到服务器响应。如果我尝试读取至少 0 个字节,如下所示:
async_read(sock, boost::asio::buffer(data),
boost::asio::transfer_at_least(0),
boost::bind(&server::read, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
在第二种情况下,我永远不会得到正确的服务器响应。
但是,如果我读取至少 1 个字节,则此 async_read 操作将永远不会结束。
那么,我该如何处理这种情况呢?
更新 1:我仍在寻找不使用时间限制的解决方案。