Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当文件不可用时,InputStream在读取时抛出SocketTimeOutException_Java_Sockets_Socket.io_Socketexception - Fatal编程技术网

Java 当文件不可用时,InputStream在读取时抛出SocketTimeOutException

Java 当文件不可用时,InputStream在读取时抛出SocketTimeOutException,java,sockets,socket.io,socketexception,Java,Sockets,Socket.io,Socketexception,尝试从服务器读取一些图像文件并使用套接字编程 但当没有文件存在时,我会得到socketTimeOut异常。不仅是失去与服务器的连接 当没有文件存在时,如何避免断开与服务器的连接 InputStream inputStream = new BufferedInputStream(socket().getInputStream()); int i = -1; while ((i = bufferedInputStream.read()) != -1) { byteArrayOutputStream

尝试从服务器读取一些图像文件并使用套接字编程

但当没有文件存在时,我会得到socketTimeOut异常。不仅是失去与服务器的连接

当没有文件存在时,如何避免断开与服务器的连接

InputStream inputStream = new BufferedInputStream(socket().getInputStream());

int i = -1;
while ((i = bufferedInputStream.read()) != -1) {
byteArrayOutputStream.write(i);
}
在上面的代码中,当我在bufferedInputStream上调用read()时,我遇到了异常。如何处理此异常并断开与服务器的连接


谢谢

当文件[不]存在时,您不会得到该异常。当您设置了读取超时,并且在超时时间内没有数据到达时,您会得到它。如果您的超时时间太短,请提高它。如果您想永远等待,请将其删除。这是你的超时时间,你设定它


如果您收到SocketTimeoutException,则不会丢失连接。是什么让你认为你这样做了?

当文件[不]存在时,你不会得到异常。当您设置了读取超时,并且在超时时间内没有数据到达时,您会得到它。如果您的超时时间太短,请提高它。如果您想永远等待,请将其删除。这是你的超时时间,你设定它


如果您收到SocketTimeoutException,则不会丢失连接。你凭什么认为你这样做了?

这篇文章帮助我了解了我在哪里以及为什么会有例外。谢谢。正如您所说,如果异常后连接没有关闭或处理,我们应该处理流的清理。如果我们不关闭流,那么将有一个绑定到套接字的流。如果我们关闭套接字,它会在内部关闭与该套接字关联的流。我的java技能非常差。请纠正我的错误。@Upendra你在说什么?我没有提到“处理溪流的清理”。不要关闭任何东西,只需记下超时时间,或者数一数,然后重试。如果超时过多,或者read()返回-1,或者得到不同的IOException,请关闭套接字,或者更好地关闭输出流(如果有)。关闭套接字将关闭其流,反之亦然。这篇文章帮助我了解了在哪里以及为什么会出现异常。谢谢。正如您所说,如果异常后连接没有关闭或处理,我们应该处理流的清理。如果我们不关闭流,那么将有一个绑定到套接字的流。如果我们关闭套接字,它会在内部关闭与该套接字关联的流。我的java技能非常差。请纠正我的错误。@Upendra你在说什么?我没有提到“处理溪流的清理”。不要关闭任何东西,只需记下超时时间,或者数一数,然后重试。如果超时过多,或者read()返回-1,或者得到不同的IOException,请关闭套接字,或者更好地关闭输出流(如果有)。关闭套接字将关闭其流,反之亦然。