1. 程式人生 > >java讀取網路資料流不完整的問題

java讀取網路資料流不完整的問題

       在用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; 
                 } 
             }