我正在组装一个相当简单的服务器,用于侦听连接然后创建这个线程-教科书式的java代码-然后接受该连接上的数据。
我遵循制造商为SOM和EOM制定的协议,如下所示。然后,我简单地使用字节计数器填充一个字节数组。
我认为这样做是最简单的。看起来效果不错。采取这种方法可能有什么问题吗。我想确保将字节计数器与数组一起使用是可以接受的。无论如何,我看不出字节计数器可能会失去同步或类似的情况。我喜欢把事情简单化。这个代码有什么问题吗?
//THREAD setup above.....
int i = 0;
int bytecounter = 0;
byte[] inbyte = new byte[1024];
byte b ;
while(true) {
int bytecounter = 0;
try{
while( ( b = disIn.readByte() ) != (byte)0xfe ){
if( b == (byte)0xfd ){
inbyte = new byte[1024];
inbyte[0] = b;
bytecounter = 1;
}
else {
inbyte[bytecounter] = b;
bytecounter++;
}
}
}catch ( java.io.EOFException ioef ){
System.out.println("EOF received" );
break;
}
//do stuff with the inbyte[] data....
// and come back through the while(true) loop
}
您不是在处理转义。任何字节具有特殊值的协议也必须具有转义值,以便这些字节可以作为数据传输。可能使用ESC作为转义值,因此ESC-SOM表示SOM字节,ESC-EOM表示EOM字节,当然ESC-ESC表示ESC字节。