您的位置:首页 > 理论基础 > 计算机网络

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

2012-05-01 09:19 316 查看

       在用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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 网络 byte socket jdk api