gpt4 book ai didi

c++ - 确保使用 async_read 读取数据

转载 作者:太空狗 更新时间:2023-10-29 21:49:58 26 4
gpt4 key购买 nike

我目前正在带宽非常低的环境中测试我的网络应用程序。我目前有代码试图通过确保我仍在接收信息来确保连接良好。

传统上,我通过在我的 ReadHandler 函数中记录时间戳来完成此操作,这样每次它被调用时我都知道我已经在套接字上接收到数据。对于非常低的带宽,这还不够,因为我的 ReadHandler 没有被足够频繁地调用。

我一直在考虑编写自己的完成条件函数(现在我正在使用 tranfer_at_least(1)),认为它会被更频繁地调用,我可以在那里记录我的时间戳,但我想知道是否有' 其他一些更标准的方法来解决这个问题。

最佳答案

我们在生产中遇到了类似的问题:我们的一些连接可能会闲置几天,但我们必须尽快检测远程是否挂掉。

我们通过启用 TCP_KEEPALIVE 选项解决了这个问题:

boost::asio::socket_base::keep_alive option(true);
mSocketTCP.set_option(option);

它必须伴随着新的启动脚本,该脚本将合理的值写入 /proc/sys/net/ipv4/tcp_keepalive_*,默认情况下超时时间很长(在 LInux 上)

关于c++ - 确保使用 async_read 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com