2014-04-16 54 views
0

我在一个相当简单的服务器上侦听连接,然后创建此线程 - 教科书Java代码 - 然后接受该连接上的数据。从网络填充字节数组

我遵循制造商针对SOM和EOM制定的协议,如下所示。 然后,我只需使用字节计数器填充一个字节数组。

我认为这是最简单的做法。它似乎工作正常。采取这种方法是否存在任何可能的问题。我想确保使用带数组的Bytecounter是可以接受的。无论如何,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

为什么所有的空白行?你不想让任何人看到偶尔的代码? – EJP

回答

0

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