直接socket.close不行吗?为何还要加socket.setSoTimeout(0);呢?如果要终止socket输入或者输出,可以加上:if(null != socket && socket.isConnected)
{
socket.shutdownInput();
socket.shutdownOutput();
}

解决方案 »

  1.   

    socket.setSoTimeout(0);
    是设置socket永不超时
      

  2.   

    问题已经解决!!!
    原因是由于java 每次GC时,垃圾回收器会将session重用中的ParcelFileDescriptor 参数被回收,导致push连接的SSLsocket成为假连接,此时socket.isConnected()=true。但是实际上socket连接已经成为不可用的或者说是坏掉的,合理保存下次参数再在下次使用就可以了。
      

  3.   

    android中使用socket出现异常setsockopt failed: EBADF (Bad file number)我这里也遇到同样的问题,现在网上找也没有什么资料,能详细的说下解决方案么?