从网络填充字节阵列



我正在组装一个相当简单的服务器,用于侦听连接然后创建这个线程-教科书式的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字节。

最新更新