java讀取網路資料流不完整的問題
阿新 • • 發佈:2018-12-31
在用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)
如下是我的解決方案:
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; } }