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