前段时间项目中用到socket编程,我用socket输入流读取一个固定长度的字节经常会遇到各种各样的错误:后面读取内容的错位,或者直接后面的内容读取不到等问题。
具体我用的方法是 socektInputStream.read(byte[] array1);
最后通过以下代码读取固定长度的字节
public static byte[] readFixedLengthArray(BufferedInputStream serverSocketBis,int length)
throws SocketTimeoutException, IOException{
byte [] result = new byte[length];
int readLen = 0;
int getLen = 0;
while(getLen<length){
readLen = serverSocketBis.read(result, getLen, length-getLen);
serverSocketBis.read(result);
if(readLen ==-1){
return null;
}
getLen = getLen + readLen;
}
return result;
}