在JAVA里使用Socket进行通信,遇到一个大问题是如何一方断开了,另一方若不对Socket进行任何读写操作,则发现不了对方已经断开。请问这个问题怎么解决

解决方案 »

  1.   

    对方不进行读写操作不表示连接已经断了阿。
    除非对方主动关闭连接或者网络故障造成中断。只要你们的连接网络层断掉以后,java能自动判断出来的,会抛出异常或用消息提示。你这种情况是,你们的连接是好的,只是对方不发送数据了,而且对方没有关闭连接。这时候你只能用是否超时来在服务器断进行强制关闭。就像ftp的链接超时一样。java.net.Socket.setSoTimeout(int timeout),这个方法可以实现超时控制,超时后会抛出一个java.net.SocketTimeoutException异常,具体的说明请参阅java api 的javadoc
      

  2.   

    呵呵 
    将java.net.Socket.setSoTimeout(int timeout) 中的timeout=0;
    就OK了
      

  3.   

    我的意思是,读写操作是我主动发起的,对方不会主动进行读写操作。如何我对不Socket进行读写操作,则连接处于空闲状态,这个时候我怎么判断对方有没有断开连接?
      

  4.   

    难道用isConnected()判断不行???