新手求教各位前辈,都进来指点指点,感激不尽!
本人学生党,期末考了,做了个网络抓包小程序,想完善个界面,我想法是将抓到的包分析结果动态的显示在一个TextArea 或者是 informationip里面,因为是很整齐的数据,前辈们觉得在哪个里面显示会简单点,抓包程序没问题了,dos下可以看见抓到的包的基本信息!在线坐等各位高手指点一二! --------------------编程问答-------------------- 放在textArea中吧,通过servlet将结果先放到request作用域中,再通过textArea进行显示。能看下你写的抓包程序莫 --------------------编程问答-------------------- 你能说的再具体点么,对了我把TextArea不用了,换了JTable,似乎更难了,你能帮我理理头绪么????感激不尽
抓包程序可以给你看
package networkdetection;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import javax.swing.JOptionPane;
import jpcap.*;
public class getMessage implements JpcapHandler {
static IPPacket ip;
static long timestart=System.currentTimeMillis();//开始监测时间
long timeend;//结束时间
static long num=1; //定义变量表示抓的包的序号
public static Connection conn;
public void handlePacket(Packet packet){
if(packet instanceof IPPacket)//判断是不是ip包
{
// System.out.println(num+"ok");
ip=(IPPacket)packet ;
//将数据包信息输出到文本域中
// getMessageUI.ipinformation.action(null, ip.src_ip );
// if(num<5)
// { //用不到数据库的部分,留作学习用
/* try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:Jpcap");
//JOptionPane.showMessageDialog(null, "连接数据库!");
}
catch (Exception e) {
e.printStackTrace();
// JOptionPane.showMessageDialog(null, "连接数据库错误!");
JOptionPane.showConfirmDialog(null, "连接数据库错误", "抓包",JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
Date jhsjDate = new Date();
//In_Time.setText(jhsjDate.toLocaleString());
time = jhsjDate.toLocaleString();
insert("INSERT [JpcapTip] ([src_ip] , [dst_ip] , [protocol] , [length] , [version] , [ident] , [rsv_frag] , [offset] , [hop_limit] , [rsv_tos] , [time] ) values('"+ ip.src_ip
+ "','" + ip.dst_ip + "','" + ip.protocol
+ "','" + ip.length + "','" + ip.version
+ "','" + ip.ident + "','" + ip.rsv_frag
+ "','" + ip.offset + "','" + ip.hop_limit
+ "','" + ip.rsv_tos + "','" + time + "')");
*/
//此行用作测试用
System.out.println(num+"\t"+ip.src_ip+"\t "+ip.dst_ip+"\t"+ip.length+"\t"+
ip.protocol+"\t"+ip.version+"\t"+"\r\n"); //屏幕输出IP数据包的信息
num++;
// try {
//
//
// //文件的存取部分练习
// RandomAccessFile note = new RandomAccessFile("packet.txt", "rw");//动态文件
// note.seek(note.length());//文件尾
// note.writeBytes(num+"\t"+ip.src_ip+"\t"+ip.dst_ip+"\t"+ip.length+"\t"+
// ip.protocol+"\t"+ip.version+"\r\n");//写入
// note.close();//关闭文件
// num++;
// }
// catch (Exception e) {
// e.printStackTrace();
// }
// }
// else
// {
//
// //抓取包的最大量,此段里面可以完成超出量的操作
// timeend=System.currentTimeMillis();//当前系统时间
// System.out.println((timeend-timestart)/1000+"秒内共检测到数据量为:"+num);
// System.exit(0);
}
// }
}
//public static void main(String[] args) throws java.io.IOException
// {
//
// String[] devices = Jpcap.getDeviceList();//获取设备列表名
// // String deviceName = devices[0];
// String deviceName = devices[1];//这个数字原本为0,经过调试发现0根本没有结果,后觉得和我的网卡插槽有关,所以改了一个1后,发现结果是大大的有啊
// Jpcap jpcap = Jpcap.openDevice(deviceName, 1028, true, 100);
// //deviceName即将打开的设备名
// //1028从设备上一次读取的最大字节数//
// //true说明是否将设备设为混杂模式的Boolean值
// //100超时值
// timestart=System.currentTimeMillis();
// while(true)
// {
// jpcap.loopPacket(-1, new getMessage());
// }
// }
//数据库的练习部分,这次课设永不到
/* public static boolean insert(String sql) {
boolean result = false;
try {
Statement stmt = conn.createStatement();
result = stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}//插入
*/
}
补充:Java , Eclipse