2
我寫一個插座客戶端,其中我送(使用的getOutputStream())的數據到服務器,下面是我的代碼java.io.StreamCorruptedException:無效流頭
this.wr = this.socket.getOutputStream();
wr.write(hexStringToByteArray(messageBody));
wr.flush();
以上是全成能夠發送數據。 1),但是當我嘗試使用
this.in = new ObjectInputStream(this.socket.getInputStream());
因爲我不知道該服務器返回什麼格式來讀取響應。在此行發生錯誤
「java.io.StreamCorruptedException:invalid stream header」。
我不知道爲什麼?我知道我會收到的價值將在十六進制格式,即 說600185將如在60 01 86 ....
任何人都可以請幫助我,來過來這個錯誤。
2)同樣如果我沒有收到任何響應後一段時間,如何關閉套接字連接。
感謝大家提前。
因此,如何將我從服務器讀取,任何建議的迴應。我只是嘗試使用this.in = this.socket.getInputStream(),System.out.println(this.in.read());但沒有達到預期的結果。 – Vardhaman 2011-04-06 03:02:15
你正在寫一個字節數組。所以在閱讀時可能需要知道數組的大小,因此我會先寫數組的長度,然後再寫數組。讀取時,讀取長度,然後讀取數組。要將整數寫入流中,請使用DataOutputStream封裝流,然後使用DataInputStream讀取。你可以使用DataOutputStream.writeInt和DataInputStream.readInt。要讀取數組,請讀取(數組);根據以前讀取的大小分配數組之後。 – MeBigFatGuy 2011-04-06 03:04:33
謝謝,但是有什麼辦法可以動態地知道我想要讀取的大小,因爲我不確定服務器可能響應的大小。還有任何想法,如果我沒有收到任何迴應套接字連接應該關閉,以避免大量的開放連接 – Vardhaman 2011-04-06 03:22:09