java接收二进制数据_java-从套接字读取二进制数据
我正在嘗試連接到服務器,然后向其發送HTTP請求(在這種情況下為GET).這個想法是請求一個文件,然后從服務器接收它.
它應同時適用于文本文件和二進制文件(例如imgs).我對文本文件沒有任何問題,它可以完美工作,但是對二進制文件有一些麻煩.
首先,我聲明一個BufferedReader(用于讀取標題和文本文件)和一個DataInput流:
BufferedReader in_text = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
DataInputStream in_binary = new DataInputStream(
new BufferedInputStream(socket.getInputStream()));
然后,我用in_text讀取標題,并發現它是文本文件還是二進制文件.如果是文本文件,我可以在StringBuilder中正確讀取.如果是二進制文件,我聲明一個byte [filesize]并存儲in_binary的以下內容.
byte[] bindata = new byte[filesize];
in_binary.readFully(bindata);
而且它不起作用.我收到一個EOFException.
我以為in_binary可能仍在流的第一個位置,因此它尚未讀取標頭.因此,我捕獲了標頭的長度,并跳過了in_binary中的字節.
byte[] bindata = new byte[filesize];
in_binary.reset();
in_binary.skip(headersize);
in_binary.readFully(bindata);
而且還是一樣.
可能會發生什么?
謝謝!
PD:我知道我可以使用URLConnection等.那不是問題.
總結
以上是生活随笔為你收集整理的java接收二进制数据_java-从套接字读取二进制数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小甲鱼python课后答案40讲_小甲鱼
- 下一篇: acer软件保护卡怎么解除_Acer软件