解决方案 »

  1.   

    发PING包,看对方是否正常回传
      

  2.   

    tcp 心跳包。
    定时发送心跳包,若指定时间内没响应则认为断开
      

  3.   

    什么是服务端,什么是客户端,你没理解清楚,而做所谓客户端的人也是个2B
    不是说在服务器上运行就叫服务端了
    服务端,首先里面要提供服务程序,客户端请求之后,服务端处理完,返回数据或执行结果服务端侦听端口,客户端连接这个端口,达到通信的目的.而你现在是,客户端开启了一个侦听端口的服务,而你所谓的服务端,像客户端一样去连接这个端口
    这样的方案局限性非常大,因为服务端通常是固定IP,而客户端IP不固定,数量也不固定
    用服务端去找客户端,这个设计太不合理了
      

  4.   

    正常的做法,不是服务端不停向客户端推送数据,而是客户端向服务端发起请求,然后服务端响应请求,返回数据
    这样,不管客户端是长连接还是短连接,也不管中间是否会断开连接,甚至是否修改IP
    反正服务端接到一个请求,就向这个请求的发起者(可以获取对方IP和端口号)返回数据,根本不需要考虑中间是否断开的问题
      

  5.   

    估计楼主说的cs是从业务角度来论述的,
    c/s结构中,Server端是提供服务,是被动方,
    没有必要替客户端维护链路,对于超时连路反倒要及时清理。
    如果链路异常,就保留数据重新连接,连接正常后,继续发送数据
      

  6.   

    在Accept里,侦听到有新的连接进来,把IP和端口加入队列(可以是LIST等)
    报catch之后,将断开的连接移出队列
    就完了啊
    侦听是一直开着的,等客户端重连的时候,就又会加入队列,然后继续推送
    什么都不用做啊