那位高手给讲一下啊,到底什么原理?
有没有具体介绍的,
谢谢了

解决方案 »

  1.   

    是从新建一个Socket还是用原来的socket?
    是用udp还是TCP?
    我做的是客户端,服务端有别人提供,我们不能修改
    我发包对方不给回包怎么办?
      

  2.   

    看看服务器和客户端通信的协议中是否有能够利用做心跳的(比如,客户端请求,服务器端应答的,即使是真实的数据也可以。)比如你的系统是个MIS系统,你的服务器程序不能修改,但是定义的协议中客户可以获得服务器的时间,那么你就拿这个作为心跳包,每过一段时间查询服务器时间,如果有应答,表明系统连接正常,如果没有表示连接断开。或者使用ICMP,不过只能检测对方是否没有断线,而不能检测你的TCP连接是否断开。并且,对方不能使用防火墙阻止ICMP应答。
      

  3.   

    再问一下,发心跳包是用原来发正常数据的Socket还是从新建一个新socket,专门发心跳包
      

  4.   

    假如程序如下
    while(1)
    {
        tcpStatus = recv(...);
        tcpStatus = send(...);
    }
    ;
    recv没有受到数据,是否会执行send?