📄 jccframe.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 + -