0
public void receivePacket(Packet packet) { 
for (byte b : ((TCPPacket)packet).option ) 

        { 
                 str += Integer.toHexString(b & 0xff) + ":"; 
                System.out.print(Integer.toHexString(b & 0xff) + ":"); 
        } 

    //if byte has  kind=8 and length=10, that means it has TCP Timestamp Option enabled 

    if(Pattern.matches("(.*)8:a(.*)", str)) 
        { 
                int tsval=0,tsecr=0; 
                int i = str.indexOf("8:a:"); 
                String tmp = str.substring(i+4); 

        for(int lp =1; lp<=3;lp++) 
            { 
                tmp=tmp.replaceFirst(":",""); 
            } 
        tsval = java.lang.Integer.parseInt(tmp.substring(0,tmp.indexOf(":")),16); 

        tmp = tmp.substring(tmp.indexOf(":")+1); 
        for(int lp =1; lp<=3;lp++) 
            { 
                tmp=tmp.replaceFirst(":",""); 
            } 
        if(tmp.indexOf(":")!=-1) 
            tsecr = java.lang.Integer.parseInt(tmp.substring(0,tmp.indexOf(":")),16); 
        else 
            tsecr = java.lang.Integer.parseInt(tmp.substring(0,16)); 
            System.out.println("\tTSval: "+tsval + "\tTSecr: "+tsecr); 

        } }     

TCPパケットのタイムスタンプをフィルタリングするためのこのソリューションをオンラインで見つけましたが、strでエラーが発生しました(「変数strが見つかりません」)誰か助けてくれますか?

4

1 に答える 1

0

これらの変数の多くは、それを取得したクラスのフィールドです。コードを変更しようとするよりも、そのクラスがどのように機能するかを理解してから、ゼロから作成する方がよいでしょう。

于 2012-12-03T19:54:41.983 に答える