1
尝试从服务器读取一些图像文件,并使用同样的套接字编程。当文件不可用时,InputStream在读取时抛出SocketTimeOutException
但是,当没有文件存在时,我得到了socketTimeOut异常。不仅是失去与服务器的连接。
当没有文件存在时,如何避免丢失与服务器的连接。
InputStream inputStream = new BufferedInputStream(socket().getInputStream());
int i = -1;
while ((i = bufferedInputStream.read()) != -1) {
byteArrayOutputStream.write(i);
}
在上面的代码中,当我调用bufferedInputStream的read()时,我收到异常。我如何处理这个异常并丢失与服务器的连接。
谢谢
这篇文章帮助我了解我在哪里以及为什么会遇到异常。谢谢。 – Upendra 2012-07-27 22:10:56
正如你所说的,如果连接没有关闭或在异常之后处理,我们应该处理流的清理。如果我们不关闭流,那么会有一个绑定到套接字的流。如果我们关闭套接字,它会在内部关闭与该套接字关联的流。我的Java技能非常差。请纠正我错在哪里。 – Upendra 2012-07-27 22:41:14
@Upendra你在说什么?我说'处理溪流清洁'没有任何内容。不要关闭任何东西,只要记下超时时间,或许可以算出来,然后重试。当你得到太多的超时,或者read()返回-1,或者你得到一个不同的IOException时,关闭套接字,或者更好的是输出流(如果有的话)。关闭套接字会关闭它的流,反之亦然。 – EJP 2012-07-27 22:48:14