我已经查看了asio documentation中的异步超时示例,但我想知道是否可以使用超时S秒进行异步读取(最多N个字节),但是如果发生超时,它将返回一个读取的字节缓冲区,直到发生超时而不是错误代码。
例如,如果我要执行1000字节的读取(recv),超时为10秒,并且在10秒之前只有300字节到达,我希望返回300字节 - 这可能是使用ASIO?甚至是伯克利插座接口?
答案 0 :(得分:-1)
是的,你可以这样做:
设置asio
请求以读取最多但是您还没有读取多少字节。
设置asio
计时器,以便在时间用完之前启动。
如果您的读取命中符合您想要的字节数,请取消定时器。
如果您获得部分阅读,请设置另一个部分阅读和另一个计时器。
但这几乎不是一件明智的事情。无论您认为这解决了什么外部问题,几乎可以肯定有更好的解决方案。