当前位置:编程学习 > JAVA >>

新手求教各位前辈,都进来指点指点,感激不尽!

本人学生党,期末考了,做了个网络抓包小程序,想完善个界面,我想法是将抓到的包分析结果动态的显示在一个TextArea 或者是 informationip里面,因为是很整齐的数据,前辈们觉得在哪个里面显示会简单点,抓包程序没问题了,dos下可以看见抓到的包的基本信息!在线坐等各位高手指点一二! --------------------编程问答-------------------- 放在textArea中吧,通过servlet将结果先放到request作用域中,再通过textArea进行显示。
能看下你写的抓包程序莫 --------------------编程问答--------------------
引用 1 楼 u011213572 的回复:
放在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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,