我正在整理一个监听连接的相当简单的服务器 然后创建这个线程 - 教科书java代码 - 然后接受该连接上的数据。
我遵循制造商为SOM和EOM制定的协议,如下所示。 然后我简单地使用字节计数器填充字节数组。
我认为这是最简单的做法。它似乎工作正常。采取这种方法是否有任何问题。我想确保使用带有数组的bytecounter是可以接受的。无论如何,我无法看到字节计数器可能会失去同步或类似的东西。我喜欢让事情变得简单。这段代码有什么问题吗?
//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
}
答案 0 :(得分:0)
你没有处理逃脱。字节具有特殊值的任何协议也必须具有转义值,以便这些字节可以作为数据传输。可能ESC用作转义值,因此ESC SOM表示SOM字节,ESC EOM表示EOM字节,当然ESC ESC表示ESC字节。