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());"我不知道为什么会出现异常

4

1 回答 1

0

我猜这个错误是因为 if cond 检查前一个数据包的协议 id,这可能与您现在正在处理的有效负载不同。

替换以下逻辑

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

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

有效载荷 pl = new Payload();

if(packet.hasHeader(pl)) //这将检查并检索有效负载

于 2014-11-04T19:21:14.930 回答