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

📄 imagecanvas.java

📁 JAVA 抓包系统~~~提取数据包分析。分离出TCP UDP ARP 等包
💻 JAVA
字号:
package ip.class3.cie;

import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;

public class ImageCanvas extends Canvas{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	//要绘制包的数量
	private int udpPacket;
	private int tcpPacket;
	private int icmpPacket;
	private int arpPacket;
	
	private String []packets;
	
	//时间设置参数
	private int timeCounter;
	private boolean isSettime;
	
	private Timer time;
	
	public ImageCanvas() {
		this.setSize(500, 500);
		
		udpPacket = 0;
		tcpPacket = 0;
		icmpPacket = 0;
		arpPacket = 0;
		
		packets = new String[4];
		packets[0] = "UDP packet";
		packets[1] = "TCP packet";
		packets[2] = "ICMP packet";
		packets[3] = "ARP packet";
		
		isSettime = false;
		
		//时间设置一分钟
		time = new Timer(1000, null);
		time.start();
		time.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				isSettime = true;
				repaint();
			}
		});
	}
		
	/**
	 * 更新图片,用线程控制
	 */
	public void update(Graphics g) {
		Color color = g.getColor();
		
		g.setColor(new Color(0,250,0));	
		g.fillRect(200, 400-udpPacket, 50, udpPacket);
		g.setColor(new Color(0,0,250));	
		g.fillRect(300, 400-tcpPacket, 50, tcpPacket);
		g.setColor(new Color(250,0,0));	
		g.fillRect(400, 400-icmpPacket, 50, icmpPacket);
		g.setColor(new Color(80,80,80));	
		g.fillRect(500, 400-arpPacket, 50, arpPacket);
		g.setColor(color);
		
		setTime(g);		
	}
	
	/**
	 * 绘制图片,画出坐标
	 */
	public void paint(Graphics g) {
		//画坐标线
		g.drawLine(50, 400, 700, 400);
		g.drawLine(50, 30, 50, 400);
		
		//画两个箭头
		g.drawLine(50, 30, 40, 40);
		g.drawLine(50, 30, 60, 40);
		g.drawLine(700, 400, 690, 390);
		g.drawLine(700, 400, 690, 410);
		
		g.drawString("数量", 70, 40);
		
		//画时间
		for(int i = 0; i < 360; ) {
			g.drawLine(50, 400-i, 60, 400-i);
			g.drawLine(50, 390-i, 55, 390-i);
			g.drawString(""+i, 61, 400-i);
			i += 20;
		}
		
		for(int i = 0; i < 400; ) {
			g.setColor(Color.blue);
			g.drawString(packets[i/100], 200+i, 415);
			g.setColor(Color.red);
			g.drawString("(千个)", 200+i, 430);
			i += 100;
		}
	
		update(g);
	}
	
	/**
	 * 时间设置
	 * @param g
	 */
	public void setTime(Graphics g ) {
		if(isSettime) {
			g.setColor(new Color(250,0,250));
			timeCounter += 6;
			g.drawLine(48, 400-timeCounter, 50, 400-timeCounter);
		}
		
		isSettime = false;
	}
	
	/**
	 * 设置各种包的数量
	 * @param udpPacket
	 * @param tcpPacket
	 * @param icmpPacket
	 * @param arpPacket
	 */
	public void setPackeg(int udpPacket, int tcpPacket, 
			int icmpPacket, int arpPacket) {
		this.udpPacket = udpPacket/10;
		this.tcpPacket = tcpPacket/10;
		this.icmpPacket = icmpPacket/10;
		this.arpPacket = arpPacket/10;
	}

}

⌨️ 快捷键说明

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