2014-11-01 2 views
0
if (packet.hasHeader(ip)) { 
     String str = FormatUtils.ip(ip.source()); 

     if (packet.hasHeader(Payload.ID)) { 

      try{ 
      payload = packet.getHeader(new Payload()); 
      } 
      catch(Exception e) 
      { 
       System.err.println("ERROR"); 

      } 


       if(payload!=null){ 
       String pattern; 
       synchronized (MainThread.lockB){ 
       pattern=MPSM.findpatt(payload.toString()); 
       } 
      synchronized (MainThread.lockB){ 
       smpsmCheckPattern(pattern, nameOfAdd, payload.toString()); 
       } 
       }' 

иногда, когда я бег программки я получаю IndexOutOfBoundsEcxeption in try "payload = packet.getHeader(new Payload());" я не знаю, почему я получаю исключениеJava jnetpcap IndexOutOfBoundsEcxeption полезную нагрузку

ответ

0

я предполагаю, что ошибка происходит потому, что если Cond проверяет идентификатор протокола предыдущего пакета, может отличаться от полезной нагрузки, которую вы сейчас обрабатываете.

Заменить НИЖЕ логику

, если (packet.hasHeader (Payload.ID)) {

  try{ 
     payload = packet.getHeader(new Payload()); 
     } 
     catch(Exception e) 
     { 
      System.err.println("ERROR"); 
     } 

с

Payload пл = новый Полезная нагрузка();

if (package.hasHeader (pl)) // это будет проверять и извлекать полезную нагрузку

Смежные вопросы