socket通讯,客户端获取数据丢失问题

客户端与服务端建立连接后,从服务端获取byte[],数据量在63757以上发现只能获取部分剩下的全部都是空,socket通讯,客户端获取数据丢失问题
文章图片

上面的代码是这样写的
byte rcvData[] = new byte[len];
rd.read(rcvData);
result = new String(rcvData,"gbk");
我的理解是socket获取到了这么多数据,但是流在写入的时候有限制
解决方式:分段获取
具体代码: byte rcvData1[] = readBytes(rd,len );
result = new String(rcvData1,"gbk");


readBytes从网上拷贝一段即可,例如
【socket通讯,客户端获取数据丢失问题】public static byte[] readBytes(InputStream in, long length) throws IOException {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int read = 0;
while (read < length) {
int cur = in.read(buffer, 0, (int)Math.min(1024, length - read));
if (cur < 0) { break; }
read += cur;
bo.write(buffer, 0, cur);
}
return bo.toByteArray();
},得到的rcvData1[]
socket通讯,客户端获取数据丢失问题
文章图片

    推荐阅读