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”)任何人都可以帮忙吗?
答案 0 :(得分:0)
很多变量都是你从中获取的类的字段。你最好不要试图理解该类是如何工作的,然后从头开始编写它而不是试图修改它们的代码。