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

📄 packetstat.java

📁 本程序用来实现对网络流量的获取及分析功能。可以分离出tcp/udp报文,http协议
💻 JAVA
字号:
package jdumper.stat;
import jpcap.packet.*;
import java.util.*;

public class PacketStat extends JDStatisticsTaker
{
	static final String[] types={
		"Total packet #",
		"Total packet size",
		"Average packet size",
		"bits/s",
		"pkts/s"
	};
	static final String[] label={"Value"};
	
	long numOfPs,sizeOfPs;
	Date first,last;
	
	public String getName(){
		return "Overall information";
	}
	
	public void analyze(List<Packet> packets){
		if(packets.size()>0){
			Packet fp=(Packet)packets.get(0),lp=(Packet)packets.get(packets.size()-1);
			first=new Date(fp.sec*1000+fp.usec/1000);
			last=new Date(lp.sec*1000+lp.usec/1000);
		}
		
		for(int i=0;i<packets.size();i++){
			numOfPs++;
			sizeOfPs+=((Packet)packets.get(i)).len;
		}
	}
	
	public void addPacket(Packet p){
		if(first==null){
			first=new Date(p.sec*1000+p.usec/1000);
		}
		last=new Date(p.sec*1000+p.usec/1000);
		
		numOfPs++;
		sizeOfPs+=p.len;
	}
	
	public String[] getLabels(){return label;}
	public String[] getStatTypes(){return types;}
	
	public long[] getValues(int index){
		long[] ret=new long[1];
		switch(index){
			case 0: //Total packet #
				 ret[0]=numOfPs;
				 return ret;
			case 1: //Total packet size
				ret[0]=sizeOfPs;
				return ret;
			case 2: //Avecage packet size
				if(numOfPs==0) ret[0]=0;
				else ret[0]=sizeOfPs/numOfPs;
				return ret;
			case 3: //bits/s
			case 4: //pkts/s
				if(first==null) ret[0]=0;
				else{
					long sec=(last.getTime()-first.getTime())*1000;
					if(sec==0) ret[0]=0;
					else
						if(index==3) ret[0]=sizeOfPs*8/sec;
						else ret[0]=numOfPs/sec;
				}
				return ret;
			default:
				return null;
		}
	}
	
	public void clear(){
		numOfPs=0;sizeOfPs=0;
		first=null;last=null;
	}
}

⌨️ 快捷键说明

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