kevinchen2046 //_buffer是我new的一个Byte,把读取的socketinput数据存入buffer _buffer.writeArrayBuffer(input.buffer,0,input.length); _buffer.pos=0; //[问题]!!!!很奇怪 用clear无法清空input //input.clear(); //必须使用下面的方式清空input while(input.bytesAvailable) { input.getByte(); } //解析buff数据 readSocketData();
cuixueying 这个问题是由于,你在上一次读数据的时候,没有读完,譬如100个字节,你只读取了50个,下次读数据的时候就会出现累加,第一次未读完的数据会累加到第二次数据的末尾。你上面的情况应该是第一次数据读null了,你可以自己判断下。
kevinchen2046 我这里说的input.clear()无法清空是指,下次有数据到达的时候,会把之前的input流长度累加比如服务器每次发一个2字节的数据表现是这样:第一次1,2第二次0,0,1,2第三次0,0,0,0,1,2...