我采用了 socket.isConnected() socket.isClose(); 判断都体现不出来.
客户端已经断开socket.isConnected()还是为true.
应该怎么判断?
谢谢!

解决方案 »

  1.   

    服务器断的Socket那边。。看exception阿断开了。。会有exception的
      

  2.   

    to wthwebbe :
    客户端如果断开连接,如果这时不服务器不往客户端socket写数据,应该不会有异常生的吧?
    我希望主动去检查客户端连接,但是不希望是写数据的时候通过捕获异常来检查.to  yarshray:
    目前无法控制客户端断开连接的时候往服务器写信息.应为客户端是不定的,而且如果发送网络中断
    这种情况,客户端也无法通知服务器.
      

  3.   

    建一个检测线程,定时发送keeplive请求,服务器确定连接是否持续!
      

  4.   

    to linuxav21:
    你得意思是说客户端定时想服务器发送keeplive信息吗? 但是我这里得情况是客户端是不受我控制得.
    就好像有一个ftp服务器,它得客户端就有很多种,即可能是图形界面的也可能是命令行的.
      

  5.   

    连接后记录客户机ip,然后没一段时间做一次 p to p 来检测
    客户机断开的时候发送一个标志字符串给server , server的流读到消息就equalignorecase(xxasdas)如果符合就证明close了
      

  6.   

    已经强调过了,我无法控制客户端,就是说客户端断开连接是不会通知服务器得.
    就算能控制,我也必须要考虑客户端断网,死机得情况.现在就是想知道在服务器上如何判断
    一个socket目前是保持连接得.
    谢谢楼上几位得热心回答!
      

  7.   

    完全可以,你自定义一个异常,继承连接断开的那个异常 为你的异常写一个log程序,定义3个field:1:connect 2:disconnect 3:clientinfo,然后你在server出listen ,客户机一旦断开就抛出这个异常,你捕获这个异常的同时得到了13或者23,这样server就有了一个储存某某ip和info的对象,下面就把这2个对象解析出来不就一切ok了吗?
      

  8.   

    catch SocketException 肯定可以,我就是这么捕捉的.实际应用中!
      

  9.   

    matq2008(叶子.net)说的正确。需要有监视线程来做,如果需要代码我可以给你一段。