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

📄 drawflux.java

📁 该软件用来统计通过本机的网络流量
💻 JAVA
字号:
package cappacket;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DrawFlux extends Canvas implements Runnable {
//	初始化数据
	final long point[]=new long[10000];
	
	CapPacket cp=new CapPacket();
	PacketPrintl pp=new PacketPrintl();
	
	public DrawFlux(PacketPrintl pp,CapPacket cp){
		pp=this.pp;	
		cp=this.cp;
	}
	
	 public void setPoint(long[] l){
//		 for(int k=0;k<122;k++){
//			  point[k]=(int)(Math.random()*1000000);		  
//		  }
		 for(int i=0;i<l.length-1;i++){
			 point[i]=l[i];
		 }		
	 }
	
	public void drawStr(Graphics g){
//	相关字符显示	
		 g.setColor(Color.YELLOW);
		for(int k=0;k<4;k++){
			g.drawString(k*300+"kb", 0, 540-145*k);
			
		}
	     g.drawString("Capture all packet", 420, 20);
	     g.drawString("Unit: kbps",420, 45);
	     
	    
	 }
	  public void paint(Graphics g){
	    Font font=new Font("TimesRoman",1,14);
	    int move=3;
//	    int point[] = new int[122];
	    g.setFont(font);
	    g.setColor(Color.green);  
	    setBackground(Color.gray);
	  for (int i=0;i<27;i++){
	    g.drawLine(1,20+i*20,610,20+i*20);
	  }  
	  for (int j=0;j<31;j++){
	    g.drawLine(5*move+j*20,1,5*move+j*20,540);
	  }
	  if(move>0)move--;
	  else move=3;
	  g.setColor(Color.red);
	 
	  int t=(int)(Math.random()*10000);
//	  for(int k=0;k<122;k++){
//		  point[k]=(int)(Math.random()*1000000);		  
//	  }
	 
	  for (int k=0;k<1000;k++){//共122个点
	   //数据处理,图形按位置、比例显示
	    g.drawLine(k*5,540-(int)point[k]/3500,5*k+5,540-(int)point[k+1]/3500);
	  }
	   drawStr(g);
	  }
	  public static void main(String args[]) {
		  PacketPrintl pp=new PacketPrintl();
		
		  
		  CapPacket cp=new CapPacket();
		  DrawFlux df=new DrawFlux(pp,cp);
		
		  cp.startCapture(pp);
		  
		  //df.setPoint(pp.getPoint());
		  df.setSize(610, 580);
		  df.setVisible(true);
		  Frame fr=new Frame();
		  fr.add(df);
		  fr.setTitle("基于Jpcap的流量统计");
		  fr.addWindowListener(new WindowAdapter(){
			  public void windowClosing(WindowEvent e){
				  System.exit(0);				  
			  }
		  });
		  fr.setSize(610,580);
		  fr.setVisible(true);
		
	  }

	public void run() {
		// TODO Auto-generated method stub
		  while(true)
		    {
			  
		      try {
		        Thread.sleep(3600);
		      }
		      catch (Exception e) {
		      }
		      
		      for(int i=0;i<50;i++)
     	       	  System.out.println("==="+pp.getPoint()[i]);
		      setPoint(pp.getPoint());
		      
		      repaint();
		    }
		
	}


}

⌨️ 快捷键说明

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