我有一個DataInputStream
,由Java中的Socket
創建。連接到使用分塊傳輸編碼的簡單Web服務器。 Web服務器實際上在普通瀏覽器中工作。但在我的程序中,我試圖讀取,我讀了第一個字節(大約5kb的數據)。但每次讀取之後都會返回0字節讀取。它是否應該阻止,直到它可以讀取?當DataInputStream一直返回0時是什麼意思?
注意:這通常不會發生。問題出在我連接的服務器上。
而且,這個代碼在這裏所有的回報甚至bytesread ==後假0:
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
我們應該假設你的意思是'ByteArrayInputStream'而不是'ByteInputStream'? – Powerlord 2010-06-08 15:42:30
對不起。其實它是DataInputStream! – Zombies 2010-06-08 15:43:56
這很奇怪...... DataInputStream *的讀取方法應該阻塞。我問的原因是因爲'ByteArrayInputStream'似乎是阻塞讀取規則的例外(它永遠不會阻塞)。 – Powerlord 2010-06-08 15:47:32