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

来源:互联网 发布:淘宝店铺的客服电话 编辑:程序博客网 时间:2024/06/05 09:04

客户端与服务端建立连接后,从服务端获取byte[],数据量在63757以上发现只能获取部分剩下的全部都是空,

上面的代码是这样写的

 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从网上拷贝一段即可,例如

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[]

0 0
原创粉丝点击