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