簡體   English   中英

DataInputStream持續返回0是什么意思?

[英]What does it mean when a DataInputStream keeps returning 0?

我有一個DataInputStream ,它是用Java中的一個Socket創建的。 該連接是使用分塊傳輸編碼的簡單Web服務器。 Web服務器實際上可以在普通瀏覽器中工作。 但是在我的程序中,我試圖讀取,我讀取了第一個頭字節(大約5kb的數據)。 但是此后的每次讀取都返回讀取的0字節。 它不應該阻塞直到它可以讀取嗎?

注意:這通常不會發生。 問題出在我連接的服務器上。

同樣,即使在bytesread == 0之后,此代碼也都返回false:

        System.out.println(socket.isClosed());
        System.out.println(socket.isInputShutdown());
        System.out.println(socket.isOutputShutdown());

這是resp標頭:

HTTP/1.1 200 OK

Date: Tue, 08 Jun 2010 14:01:01 GMT

Server: Apache/2.2.11 (Unix) PHP/5.2.10

X-Powered-By: PHP/5.2.10

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html

根據http://java.sun.com/j2se/1.4.2/docs/api/java/io/DataInputStream.html#read(byte []) ,DataInputStream返回0是可能且有效的。這應該沒問題,因為您應該在流的末尾測試-1。

沒錯,InputStream永遠不應在讀取時返回0。 它應該阻塞直到一個字節可用為止,或者返回-1表示EOF。

您有機會提供測試用例嗎? 我以前見過這樣的錯誤

暫無
暫無

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

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