如题!

解决方案 »

  1.   

    定一个时间,如果无响应,则发送一包,若为SOCK_ERROR,则结束线程
      

  2.   

    或者用个链路测试包
    就是每隔一段时间发个包给服务器。
    如果你正在发包,就不要发链路测试包了。
    否则每隔30秒或者什么的一个时间段发一个测试包过去。假如client和server之间没包传了。服务端又在30秒收不到测试链路包就认为client挂了
      

  3.   

    你在服务器程序中设两个变量,一个记录前一间隔的值(记为a),另一个记录间隔时间内值(记为b),并规定一定的时间间隔(如在这个间隔内没访问就认为它死,你自己去决定这个间隔)每当accept成功调用一次就将b加1,当时间间隔到了的时候比较a与b的值,如果相等则表示这段时内没连接,退出线程,否则将a的值设为b,继续循环。
      

  4.   

    记得要设置accept的超时时间。(其实设了超时间就不用那两个变量了,当accept超时就判断就行了)
      

  5.   

    用消息机制来做,响应Close事件不就行了
      

  6.   

    1)正常退出时候,响应onclose();
    2)对于非正常退出,最好的办法是使用 “心跳包”:客户定时相服务器发送数据,服务器定时循环检查所有连接状态,如果超过时间没有接到客户心跳包,就关闭该线程。