ReadableByteChannel.read()
的规范将-1
显示为结束流的结果值。此外,如果线程中断,则可能导致ClosedByInterruptException
。为什么在ReadableByteChannel.read()中发生IOException()
现在我认为这将是所有 - 而且这是大部分时间。然而,现在,然后我得到如下:
java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
at ...
我不unterstand为什么我不在这种情况下获得-1
。此外,这不是一个干净的例外,因为我无法捕捉任何可能的IOException
。
因此,这里是我的问题:
- 这是为什么例外首先抛出?
- 可以肯定的是,读取抛出的任何异常都是关于套接字被关闭的吗?
- 这一切与
write()
相同吗?
顺便说一句:如果我打电话SocketChannel.close()
我还必须打电话SocketChannel.socket().close()
,或者这是否暗示了较早?
谢谢,斯特芬
谷歌翻译异常翻译:“现有的连接被远程主机强行关闭” – 2010-03-15 20:25:12
@Steffen:我试图回答你的一些担忧。希望它会有所帮助。 – 2010-03-19 15:35:28