我有一个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