提升::asio插座 - 如何在"timeout"中制作read_some 'throw'?
Boost::asio socket - how to make read_some 'throw' in "timeout"?
所以通常我们做这样的事情socket.read_some(boost::asio::buffer(buffer, buffer_size));
,但如何使它抛出一个异常的情况下,读还没有开始一段时间超过说333秒?
你应该考虑使用async_read_some
而不是read_some
,因为它允许你在读取的同时启动一个新的背景定时器。然后,为每个新的套接字创建一个新的计时器:
boost::asio::io_service io_service;
time_t_timer timer(io_service);
timer.expires_from_now(333);
std::cout << "Starting asynchronous waitn";
timer.async_wait(&handle_timeout);
io_service.run();
您将有两个异步调用在后台等待。
当你收到定时器上的一些数据时,你可以使用cancel和expires_from_now
重置倒计时,当定时器到期时,你可以关闭套接字或采取一些其他行动。
相关文章:
- 使用 ImageIO.read() 生成的图像是否仍然使用传递给它的相同内存?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- write() 和 read() 中几乎没有混淆
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 为什么调试器引发"read access violation. this was nullptr"异常?
- 对同一文件使用 .read 的次数是否有限制?
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- QDataStream read to QVector
- asio::read() 需要很长时间,使用 asio::write 没有问题
- Read OpenCV Mat 16bit to QImage 8bit Greyscale
- 如果 I/O read() 处于阻塞阶段,如何使用 Ctrl+C 退出 C++ 程序?
- 如何将 (serverClients[i].read() 传递给 ESP8266 上的字节数组
- 将 Lora.read() 转储到数组
- 无法通过 FUSE 文件系统"read"任何内容
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- 为什么以下代码块提供输出"ZZZ(some garbage value)"而不是"ZZ(some garbage value)"
- 错误:在类型 "blah blah" 的绑定引用中删除限定符以初始化"some other blah blah"
- C++HTTP客户端在GET请求后挂起read()调用