62,635
社区成员




public void run(){
int value= 0;
int length= 0;
int flagSum= 0;
try{
ByteBuffer byteBuffer= ByteBuffer.allocate(1024);
while((value= inStream.read())!= -1){
if(length== 0){
System.out.println(new Date()+ " "+ socket.getInetAddress()+ " "+ socket.getPort());
}
System.out.print(value+ " ");
byteBuffer.put((byte)value);
length++;
if(value== 255){
flagSum++; //遇到标志位,则将标志位个数加1
}else{
flagSum= 0;
}
if(flagSum== 4){
System.out.println("Length= "+ length);
byteBuffer.flip(); //结束当前缓冲区添加操作
byte[] data= new byte[byteBuffer.limit()];
byteBuffer.get(data);
byteBuffer.clear();
System.out.println("协议解析后的信息如下:");
MessageFrame msg= new MessageFrame(data);
System.out.println("head CommandType: "+ msg.getCommandType());
System.out.println("head DeviceType: "+ msg.getDeviceType());
System.out.println("head ObjectType: "+ msg.getObjectType());
System.out.println("head ObjectId: "+ msg.getObjectId());
Iterator<Object> listIterator= msg.listValues().listIterator();
while(listIterator.hasNext()){
Object o= listIterator.next();
System.out.println(o.getClass()+ ": "+ o);
}
System.out.println();
flagSum= 0; //标志位重新开始计数
length= 0; //帧数据长度置0
}
}
}catch(IOException e){
e.printStackTrace();
}
}