簡體   English   中英

TCP套接字上的管道損壞讀取

[英]Broken pipe on TCP socket read

我有一個Java應用程序,該應用程序打開一個TCP服務器套接字,然后從該套接字讀取和寫入。 我遇到了一個問題,即服務器在讀取時獲得IOException消息“ Broken pipe”。 我對為什么在寫入時會發生這種情況有很好的了解,但是我不知道為什么在讀取時會發生這種情況。 供參考,這是堆棧跟蹤的頂部

Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:198)
at sun.nio.ch.IOUtil.read(IOUtil.java:166)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:243)

我假設必須發生的事情是操作系統出現EPIPE錯誤,但是我找不到發生此錯誤的代碼。 我已經在JDK源代碼(Java和C源代碼)中查找了文本“斷管”,但找不到真正產生此異常的代碼。

最終,我要回答的問題是為什么會發生這種情況,但是我也將接受一個答案,該答案僅說明了在何處生成此錯誤。

讀取時發生的原因與寫入時發生的原因相同。 您寫了一個已被同級關閉的連接。 您可以讀取它,因為由於緩沖而推遲了異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM