当我尝试通过拆分从服务器发送一个大文件时,一些包没有到达客户端......正如您在控制台输出中看到的那样
http://s7.postimg.org/94yjfame3/error.png
客户端仅接收 19799.. 字节,服务器发送 62800.. 字节。
代码太长,无法在这里过去......但这里是基础知识:
// server side -> send data
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
byte[] somePackageInfo= new byte[500];
byte[] streamOut = new byte[20000];
while(getDataFromLargeFile(somePackageInfo,streamOut) != 0) {
out.write(somePackageInfo,0,500);
out.write(streamOut);
out.flush();
}
out.write(0);
out.flush();
// client side -> get data
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
byte[] somePackageInfo= new byte[500];
byte[] streamIn= new byte[20000];
while(true) {
if(in.read(somePackageInfo,0,500) == 0) break;
in.read(streamIn);
saveDataToLargeFile(somePackageInfo,streamIn);
}
我试图减慢传输速度(sleep(500)
),但只有大部分包裹到达。
试图删除flush()
但仍然只有大部分包裹到达。
是什么导致了这个问题,我该如何解决?