if((sock==null)||(sock.isConnected()))

解决方案 »

  1.   

    Socket  isConnected()
    isConnected
    public boolean isConnected()Returns the connection state of the socket. Returns:
    true if the socket successfuly connected to a server
    Since: 
    1.4 
    好像if((sock==null)||(sock.isConnected()))不对劲吧
      

  2.   

    isConnected()并不能检测出服务器端是否关闭
      

  3.   

    这看你在什么平台下啦:
    比如
    sco unix 如果你telnet连接到sco unix,然后禁用网卡,sco unix不能判断telnet页断开而退出连接。这是系统bug。我用c/c++ for sock 测试过,无法判断是否连接。
    winNT,c/c++可以判断,系统会报错。
    java 我没有试过,不好意思:)
      

  4.   

    算了,还是整一个线程,定期用这个socket发送一个字符,认为抛出异常为socket失效。
    谁有更绝点的,多谢多谢。
    如果这不能解决的话,程序就太不健壮了
      

  5.   

    try the method.
    boolean socket.getKeepAlive().
      

  6.   

    有道理,java不可能没有他解决的渠道。
    多谢
      

  7.   

    socket.getKeepAlive()获得的是属性而不是状态
      

  8.   

    isClosed
    public boolean isClosed()
    Returns the closed state of the socket. Returns:
    true if the socket has been closed
    Since:
    1.4 
    See Also:
    close()
    不过是1.4才有的方法
      

  9.   

    一个Socket失效可能是某一段主动关掉close(),也可能是因为一段的程序死亡或是关机。
    这样就没有显式调用close(),这样的话,还能够监测到这个socket的死活么?
    我反正是试了一下,isClosed()不好用。
    救命啊
      

  10.   

    算了,还是按照我以前说的那样吧,用个线程定时发送,发送失败就认为socket失效。
    如此了。不管怎么样,结贴!!!!!!!!!!