如果是客户端正常的退出,服务器端就可以响应该OnClose()事件,
而用netstat命令在cmd中查看所有tcp连接的时候,该 tcp连接(就
是上面建立的连接)处于Established(建立状态)怎么回事,
有谁遇到过这样的状态吗?
谢谢!

解决方案 »

  1.   

    楼猪的想法是值得一试的如在服务端发出响应客户端的协议(包)后加一个检测
    就是等待客户端的返回值成功与否,这样做的确比较的安全
    可是有点费时间的说,但总比出现安全漏洞好吧客户端就可以用象你说的那样,用个计时器做判断
    问题好象也不是那的简单,隔一段时间没有收到消息并不一定就是
    网络短开,可能是阻塞或延迟什么?(刚开始学tcp/ip协议编程,没什么api,sdk编程经验,
    以上属个人愚见,请各位大人多指教,关注ing)
      

  2.   

    TCP 连接  内建有keepalive定时器的吧,当空闲超过一定时间,会向对方发送测试报文的,并请求回应,所以断开网线应该会有响应,但不是马上,好象是2个或是4个小时左右!
      

  3.   

    keeplive是2小时更本不能满足要求.
    你说的正常退出就是client closesocket?
    那服务器短可以知道不应该是establish.
    不过我觉得不太可能