JAVA 判断Socket 远程端是否断开连接
最近在做项目的时候,遇到这样一个问题,如何判断 Socket 远程端连接是否关闭,如果关闭的话,就要重建连接Socket的类提供了一些已经封装好的方法, 如 isClosed()、 isConnected()、isInputStreamShutdown()、isOutputStreamShutdown() 等,在测试时发现,这些方法 都是本地端的状态 ,无法判断远端是否已经断开连接。 其实在socket类中有一个方法 sendUrgentData ,它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节(在Java 中是抛出异常),而SO_OOBINLINE属性默认情况下就是关闭的。 以下是示例代码仅供参考: public class Nksocket extends Thread{ public String ip=null;//连接服务器的IP public Integer port=null;//连接服务器的端口 private Socket socket=null;//套节字对象 private boolean close = false; // 关闭连接标志位,true表示关闭,false表示连接 private Integer sotimeout=1*1*10;//超时时间,以毫秒为单位 //----