使用BufferedReader读取Socket流中的数据,发现读出来的内容不完整,有一部分漏掉了,如下图所示,每次都只能打印出前16003个字符:

解决方案 »

  1.   

    如果使用两次read方法,就能够读取完整:
      

  2.   

    应该是你定义的byte数组的问题,数组容量多大呢,容量不如需要读取的数据大的话要多次读取的
      

  3.   

    我用的是read(char[])方法,不是read()或者readLine()之类的,返回值是一个整数,表示此次读取到的用户数量,无法通过返回值来判断是否全部读到了。
      

  4.   

    while(bufferReader.read(chaBuf,0,16003) !=-1)
    {
    // 你的逻辑处理
    }
    这样就是能直到读完所有的数据再结束
      

  5.   

    不论如何你都要循环读取的,哪怕一次可以读完,为了功能的完整性,也必须循环读取,需要用到while判断后方是否还有数据
      

  6.   

    你的效果是正常的,因为TCP是流协议,,每一次数据包发送的数据大小是不确定的,,有可能一个包发出去,有可能分多个包发出去,所以你得在接收端使用while循环来取得对方发送过来的数据~!