V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
thomaswang
V2EX  ›  程序员

unix 设置保活机制

  •  
  •   thomaswang · 2018-01-18 21:04:01 +08:00 · 1751 次点击
    这是一个创建于 2535 天前的主题,其中的信息可能已经有所发展或是发生改变。
    int keepAlive = 1;   // 开启 keepalive 属性. 缺省值: 0(关闭)  
    int keepIdle = 60;   // 如果在 60 秒内没有任何数据交互,则进行探测. 缺省值:7200(s)  
    int keepInterval = 5;   // 探测时发探测包的时间间隔为 5 秒. 缺省值:75(s)  
    int keepCount = 2;   // 探测重试的次数. 全部超时则认定连接失效..缺省值:9(次)  
    setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void*)&keepAlive, sizeof(keepAlive));  
    setsockopt(s, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle));  
    setsockopt(s, SOL_TCP, TCP_KEEPINTVL, (void*)&keepInterval, sizeof(keepInterval));  
    setsockopt(s, SOL_TCP, TCP_KEEPCNT, (void*)&keepCount, sizeof(keepCount));  
    

    这个是 server 端还是 client 端设置,还是都设置?

    4 条回复    2018-01-20 10:14:55 +08:00
    jimzhong
        1
    jimzhong  
       2018-01-19 02:54:56 +08:00
    Panic
        2
    Panic  
       2018-01-19 08:25:21 +08:00
    保活一般都是应用自己加的,基本没人用 tcp 层面的 KEEPALIVE
    thomaswang
        3
    thomaswang  
    OP
       2018-01-19 16:06:01 +08:00
    @Panic 能说说自己怎么加吗,服务端(对每个连接)、客户端都要设置计时,到时间就发个包给对放 ?
    Panic
        4
    Panic  
       2018-01-20 10:14:55 +08:00
    @thomaswang 不叫保活, 不都叫心跳吗, 反正我们自己都是用心跳的. 类似下面这种
    https://segmentfault.com/a/1190000006832547
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.