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

📄 jccframe.java

📁 用javaJPcapWinpcap协议分析
💻 JAVA
字号:
package ccsniffer.ui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import ccsniffer.*;
import jpcap.*;
import jpcap.packet.*;
import java.util.*;
import java.sql.Timestamp;

public class JCCFrame extends JFrame implements ActionListener
{
	
	JLabel statusLabel;
	JMenu statMenu;
	JTable tabledisplay = null;
	Vector rows,columns;
	DefaultTableModel tabModel;
	JScrollPane scrollPane;
	
	CCCaptor captor = new CCCaptor();


	public static JCCFrame openNewWindow(){
		JCCFrame frame=new JCCFrame();
		frame.setSize(800,400);
		frame.setVisible(true);
		
		return frame;
	}

	public JCCFrame(){
				
		setTitle("捕获IP数据报程序");
		
		this.getContentPane().setLayout( new BorderLayout() );

		//Create Menu
		JMenuBar menuBar=new JMenuBar();
		setJMenuBar(menuBar);
		
		//Capture
		JMenu menu=new JMenu("捕获");
		menuBar.add(menu);
		JMenuItem item=new JMenuItem("开始");
		item.setActionCommand("start");
		item.addActionListener(this);
		menu.add(item);
		item=new JMenuItem("停止");
		item.setActionCommand("stop");
		item.addActionListener(this);
		menu.add(item);
		item=new JMenuItem("退出");
		item.setActionCommand("exit");
		item.addActionListener(this);
		menu.add(item);

		rows=new Vector();
		columns= new Vector();
		
		columns.addElement("数据报时间");
		columns.addElement("源IP地址");
		columns.addElement("目的IP地址");
		columns.addElement("首部长度");
		columns.addElement("数据长度");
		columns.addElement("是否分段");
		columns.addElement("分段偏移量");
		columns.addElement("首部内容");
		columns.addElement("数据内容");

		
		tabModel=new DefaultTableModel();
		tabModel.setDataVector(rows,columns);
		tabledisplay = new JTable( tabModel );
		scrollPane= new JScrollPane(tabledisplay);
		this.getContentPane().add( new JScrollPane(tabledisplay),BorderLayout.CENTER);
		
		statusLabel=new JLabel("20041016班 徐锋 20043298");
		this.getContentPane().add(statusLabel,BorderLayout.SOUTH);
				
	}
	public void actionPerformed(ActionEvent evt){
		String cmd=evt.getActionCommand();
		
		if(cmd.equals("start")){
			captor.capturePacketsFromDevice();
			captor.setJCCFrame(this);
		}
		else if(cmd.equals("stop")){
			captor.stopCapture();
		}
		else if(cmd.equals("exit")){
			System.exit(0);
		}
	}

	public void dealPacket( Packet packet )
	{
		try
		{
			Vector r=new Vector();
			String strtmp;
			Timestamp timestamp = new Timestamp((packet.sec * 1000) + (packet.usec / 1000)); 
			
			r.addElement( timestamp.toString() );	//数据报时间
			r.addElement(((IPPacket)packet).src_ip.toString());	//源IP地址
			r.addElement(((IPPacket)packet).dst_ip.toString());	//目的IP地址
			r.addElement( packet.header.length );	//首部长度
			r.addElement( packet.data.length );		//数据长度
			r.addElement( ((IPPacket)packet).dont_frag == true ? "分段" : "不分段" );				//是否不分段
			r.addElement( ((IPPacket)packet).offset );		//数据长度
	
			strtmp = "";
			for(int i=0;i<packet.header.length;i++){		
				strtmp += Byte.toString(packet.header[i]);
			}
			r.addElement(strtmp);	//首部内容
	
			strtmp = "";
			for(int i=0;i<packet.data.length;i++){		
				strtmp += Byte.toString(packet.data[i]);
			}
			r.addElement(strtmp);	//数据内容
			
			
			
			rows.addElement(r);
			tabledisplay.addNotify();
		}
		catch( Exception e)
		{
			
		}
	}
	public static void main ( String args[] )
	{
		JCCFrame.openNewWindow();
	}
}

⌨️ 快捷键说明

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