我有一個BufferedOutputStream問題。我想通過套接字連接從Android設備發送一個kml文件到一個java服務器。 (連接是好的,我已經能夠與我的程序的其他部分的PrintWriter交換數據)Android - BufferedOutputStream不刷新
要發送我的kml文件,我填充緩衝區。但是當我沖洗()它時,什麼也沒有發生。
int lu = inFile.read();
while(lu != -1){
out.write(lu);
lu = inFile.read();
}
out.flush();
inFile.close();
INFILE是用來讀取KML文件我流 出來是用我的插座的OutputStream我的BufferedOutputStream
我不收我的了對象,但我不想,我不不要只用一次。這就是問題所在...... close()方法發送緩衝區的數據,但也關閉套接字。 flush()方法不會發送緩衝區的數據。
我想刷新緩衝區而不關閉套接字。
我也嘗試使用mySocket.shutdownOutput();
int lu = inFile.read();
while(lu != -1){
out.write(lu);
lu = inFile.read();
}
out.flush();
mySocket.shutdownOutput();
inFile.close();
此方法關閉我的流並保持我的套接字打開,這就是我想要的。 但是,當我嘗試打開一個新的輸出流,異常java.net.SocketException:套接字輸出已關閉
因此,如何刷新我的緩衝區而不關閉我的sokcet正在無法打開新的輸出流?
哪種類型的OutputStream是BufferedOutputStream的基礎? – vaughandroid
從具有s.getOutputStream()的套接字獲取的outputStream。 – ZarkDev
我想你需要仔細看看服務器端實際發生了什麼。你可以發佈那麼做的代碼嗎?我有一種感覺@ EJP的答案是在正確的軌道上... – vaughandroid