⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdcontinuousstatframe.java

📁 一个java编写的抓包并切可以分析的代码
💻 JAVA
字号:
package jdumper.ui;
import jpcap.packet.*;
import java.awt.*;
import java.util.*;

import jdumper.stat.JDStatisticsTaker;
import jdumper.ui.graph.LineGraph;

public class JDContinuousStatFrame extends JDStatFrame
{
	LineGraph lineGraph;
	
	JDStatisticsTaker staker;
	int statType;
	boolean drawTimescale; //true-> time, false->packet#
	int count,currentCount=0;
	long currentSec=0;
	
	public static JDContinuousStatFrame openWindow(Vector packets,JDStatisticsTaker staker){
		JDContinuousStatFrame frame=new JDContinuousStatFrame(packets,5,true,staker,0);
		frame.setVisible(true);
		return frame;
	}
	
	JDContinuousStatFrame(Vector packets,int count,boolean isTime,JDStatisticsTaker staker,int type){
		super(staker.getName()+" ["+staker.getStatTypes()[type]+"]");
		this.staker=staker;
		this.drawTimescale=isTime;this.count=count;
		statType=type;
		
		lineGraph=new LineGraph(staker.getLabels());
		
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(lineGraph,BorderLayout.CENTER);
		setSize(300,300);
		
		if(packets==null || packets.size()==0) return;
		
		Enumeration en=packets.elements();
		currentSec=((Packet)packets.firstElement()).sec;
		currentCount=0;
		int index=0;
		if(isTime){
			while(index<packets.size()){
				Packet p=(Packet)packets.elementAt(index++);
				
				while(index<packets.size() && p.sec-currentSec<=count){
					staker.addPacket(p);
					p=(Packet)packets.elementAt(index++);
				}
				if(index==packets.size()) break;
				currentSec+=count;
				index--;
				lineGraph.addValue(staker.getValues(type));
				staker.clear();
			}
		}else{
			while(en.hasMoreElements()){
				for(int i=0;en.hasMoreElements() && i<count;i++,currentCount++)
					staker.addPacket((Packet)en.nextElement());
				if(!en.hasMoreElements()) break;
				currentCount=0;
				lineGraph.addValue(staker.getValues(type));
				staker.clear();
			}
		}
	}
	
	public void addPacket(Packet p){
		staker.addPacket(p);
		if(drawTimescale){
			if(currentSec==0) currentSec=p.sec;
			if(p.sec-currentSec>count){
				lineGraph.addValue(staker.getValues(statType));
				staker.clear();
				currentSec+=count;
				if(p.sec-currentSec>count)
					for(long s=p.sec-currentSec-count;s>count;s-=count){
						lineGraph.addValue(staker.getValues(statType));
					}
			}
		}else{
			currentCount++;
			if(currentCount==count){
				lineGraph.addValue(staker.getValues(statType));
				staker.clear();
				currentCount=0;
			}
		}
	}
	
	public void clear(){
		currentCount=0;
		currentSec=0;
		lineGraph.clear();
	}

	void fireUpdate(){
		repaint();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -