从网络填充字节数组

时间:2014-04-16 21:07:10

标签: java arrays sockets network-programming

我正在整理一个监听连接的相当简单的服务器 然后创建这个线程 - 教科书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
}

1 个答案:

答案 0 :(得分:0)

你没有处理逃脱。字节具有特殊值的任何协议也必须具有转义值,以便这些字节可以作为数据传输。可能ESC用作转义值,因此ESC SOM表示SOM字节,ESC EOM表示EOM字节,当然ESC ESC表示ESC字节。