问题描述
在Android socket同步连接时,服务的可能会在bufferedInputStream.read中阻塞,其实此时已经读完数据了,由于在while循环中去读取的,所以回导致无法跳出循环继续后面的代码,如下:
while ((n = bufferedInputStream.read(bytes, 0, bytes.length)) != -1) {
fos.write(bytes, 0, n);
}
....
解决方法
让客户端发送内容时顺带发送内容长度,根据接收到的长度判断是否跳出循环,如下:
while ((n = bufferedInputStream.read(bytes, 0, bytes.length)) != -1) {
fos.write(bytes, 0, n);
totalSize += n;
if (size <= totalSize) {
break;
}
}
....