一个主线程,一个WORKER线程。是不是在主线程里设置一个定时器,定时去做心跳测试啊。请问有没有什么高招啊。

解决方案 »

  1.   

    socket 有个SO_KEEPALIVE 的选项,可以用setsockopt 来设置。但2小时才由系统发送一次。如果要自己做,没什么高招,基本上也就是定时送个特定数据包给给server,server 端收到这个数据就丢弃掉。
    如果怕发送的heartbeat 包影响正常的数据处理流程,可以发送MSG_OOB数据(send(...,MSG_OOB)), server 端用 recv(...., MSG_OOB) 接收。