java读取网络数据流不完整的问题

来源:互联网 发布:vm虚拟机 for mac 编辑:程序博客网 时间:2024/05/21 08:48

       在用java的socket读取网络数据流的时候,datainputstream read(byte [] b),数据读取不完整,例如有3W的数据,有可能读到2W时read就解除阻塞,这个问题纠结了好久,终于找到问题所在,并得以解决。
如下是jdk的API:
http://www.cjsdn.net/Doc/JDK60/java/io/DataInputStream.html#read(byte[], int, int)

如下是这位码友对此问题的解读:
http://topic.csdn.net/u/20120316/11/ee58441d-4120-425e-9ed5-462b62733f6f.html


如下是众码友对此问题的解释以及解决方案
http://www.iteye.com/problems/54246


如下是我的解决方案:

int length=read.readInt();byte [] data=new byte[length]; int nIdx = 0;              int nReadLen = 0;              while (nIdx < length)              {                  nReadLen = read.read(data, nIdx, length - nIdx);                  if (nReadLen > 0)                  {                      nIdx = nIdx + nReadLen;                  }                  else                  {                      break;                  }              }


原创粉丝点击