金农网大宗交易平台:懂JAVA的进!!!急需~~~

来源:百度文库 编辑:高考问答 时间:2024/04/29 21:13:48
谁能帮我把下面这段JAVA程序解释一下:在后面注释一下。
import java.io.*;
import jpcap.*;
import java.sql.*;

class ThreadPacket extends Thread
{
private Packet packet;
private MainFrame mainFrame;
private Connection con=null;
private Statement stmt=null;

public ThreadPacket(Packet packet,MainFrame mainFrame)
{
this.packet=packet;
this.mainFrame=mainFrame;
}

public void run()
{
if (packet instanceof IPPacket) //该数据包为IPPacket
{
IPPacket ipPacket=(IPPacket)packet;
insertIPPacket(ipPacket);
String packetStr="ident:"+ipPacket.ident+"\n协议:IP"+" 源IP地址:"+ipPacket.src_ip+" 目的IP地址:"+ipPacket.dst_ip+"\n内容:"+ipPacket.data;
mainFrame.jTextArea1.append(packetStr+"\n\n");
}
if(packet instanceof TCPPacket) //该数据包为TCPPacket
{
TCPPacket tcpPacket=(TCPPacket)packet;
insertTCPPacket(tcpPacket);
String packetStr="ident:"+tcpPacket.ident+"\n协议:TCP"+" 源端口:"+tcpPacket.src_port+" 目的端口:"+tcpPacket.dst_port+"\n内容:"+tcpPacket.data;
mainFrame.jTextArea1.append(packetStr+"\n\n");
}
if(packet instanceof UDPPacket) //该数据包为UDPPacket
{
UDPPacket udpPacket=(UDPPacket)packet;
insertUDPPacket(udpPacket);
String packetStr="ident:"+udpPacket.ident+"\n协议:UDP"+" 源端口:"+udpPacket.src_port+" 目的端口:"+udpPacket.dst_port+"\n内容:"+udpPacket.data;
mainFrame.jTextArea1.append(packetStr+"\n\n");
}
if(packet instanceof ICMPPacket) //该数据包为ICMPPacket
{
ICMPPacket icmpPacket=(ICMPPacket)packet;
insertICMPPacket(icmpPacket);
String packetStr="ident:"+icmpPacket.ident+"\n协议:ICMP"+" 源IP地址:"+icmpPacket.src_ip+" 目的IP地址:"+icmpPacket.dst_ip+"\n内容:"+icmpPacket.data;
mainFrame.jTextArea1.append(packetStr+"\n\n");
}
}

也可以只解释上面的,但全解释最好,呵呵!!!

private void insertTCPPacket(TCPPacket tcpPacket)
{
try{
Connection con=PacketConnect.getconn();
Statement stmt=con.createStatement();
String insertString="insert into tcpPacket (SourceIP,SourcePort,DestinationIP,DestinationPort,Ack,Ack_num,Psh,Rst,Syn,Sequence,Ident,Urgent_pointer) values ('"+
tcpPacket.src_ip+"',"+tcpPacket.src_port+",'"+tcpPacket.dst_ip+"',"+tcpPacket.dst_port+","+tcpPacket.ack+","+tcpPacket.ack_num+","+tcpPacket.psh+","+
tcpPacket.rst+","+tcpPacket.syn+","+tcpPacket.sequence+","+tcpPacket.ident+","+tcpPacket.urgent_pointer+")";
stmt.executeUpdate(insertString);
}
catch(SQLException ee){
System.out.println("TCPPacket insert Error!");
}
finally{
PacketConnect.close(stmt);
PacketConnect.close(con);
}
}

麻烦解释一下每句代码的含义,稍微注释一下就OK拉
先谢拉,好的话追加分数,呵呵!!!

//看了一下,程序没什么难点.其实没什么好注释的.都很清楚.应你的需要,就写一点吧.
//你给出的程序只是小部分,有很多方法是关连到其他类的方法,你不给出,那只能看方法名称或可能的做法帮你注释了.
//该类的目的就是把数据包分类后插入数据库对应的表里,然后是窗口的文本域里显示出相关信息
//其实不知道你问什么问题,如果有不明白给我发消息

class ThreadPacket extends Thread //线程类
{
private Packet packet; //接口,最少有IPPacket,TCPPacket,UDPPacket,ICMPPacket实现该接口
private MainFrame mainFrame; //窗口类
private Connection con=null; //接口,与特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果
private Statement stmt=null; //接口,用于执行静态SQL语句并返回它所生成结果的对象

//构造方法,传入Packet对象和MainFrame
public ThreadPacket(Packet packet,MainFrame mainFrame)
{
this.packet=packet;
this.mainFrame=mainFrame;
}

//调用start()时
public void run()
{
if (packet instanceof IPPacket) //如果该数据包为IPPacket类
{
IPPacket ipPacket=(IPPacket)packet; //还原为本来的类型
insertIPPacket(ipPacket);//把该数据包插入数据库
String packetStr="ident:"+ipPacket.ident+"\n协议:IP"+" 源IP地址:"+ipPacket.src_ip+" 目的IP地址:"+ipPacket.dst_ip+"\n内容:"+ipPacket.data; //获取IPPacket的成员到字符串
mainFrame.jTextArea1.append(packetStr+"\n\n");//把该字符串添加到文本域
}
if(packet instanceof TCPPacket) //如果该数据包为TCPPacket
{
TCPPacket tcpPacket=(TCPPacket)packet;
insertTCPPacket(tcpPacket); //插入数据库
String packetStr="ident:"+tcpPacket.ident+"\n协议:TCP"+" 源端口:"+tcpPacket.src_port+" 目的端口:"+tcpPacket.dst_port+"\n内容:"+tcpPacket.data; //获取TCPPacket的成员到字符串
mainFrame.jTextArea1.append(packetStr+"\n\n");//把该字符串添加到文本域
}
if(packet instanceof UDPPacket) //如果该数据包为UDPPacket
{
UDPPacket udpPacket=(UDPPacket)packet; //还原为本来的类型
insertUDPPacket(udpPacket); //把该数据包插入数据库
String packetStr="ident:"+udpPacket.ident+"\n协议:UDP"+" 源端口:"+udpPacket.src_port+" 目的端口:"+udpPacket.dst_port+"\n内容:"+udpPacket.data; //获取UDPPacket的成员到字符串
mainFrame.jTextArea1.append(packetStr+"\n\n"); //把该字符串添加到文本域
}
if(packet instanceof ICMPPacket) //如果该数据包为ICMPPacket
{
ICMPPacket icmpPacket=(ICMPPacket)packet; //还原为本来的类型
insertICMPPacket(icmpPacket); //把该数据包插入数据库
String packetStr="ident:"+icmpPacket.ident+"\n协议:ICMP"+" 源IP地址:"+icmpPacket.src_ip+" 目的IP地址:"+icmpPacket.dst_ip+"\n内容:"+icmpPacket.data; //获取ICMPPacket的成员到字符串
mainFrame.jTextArea1.append(packetStr+"\n\n"); //把该字符串添加到文本域
}

顺便把这段也注释一下,谢谢:
//以下方法就是把数据包插入数据库的实现
private void insertTCPPacket(TCPPacket tcpPacket)
{
try{
Connection con=PacketConnect.getconn(); //返回一个与特定数据库的连接
Statement stmt=con.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库
String insertString="insert into tcpPacket (SourceIP,SourcePort,DestinationIP,DestinationPort,Ack,Ack_num,Psh,Rst,Syn,Sequence,Ident,Urgent_pointer) values ('"+
tcpPacket.src_ip+"',"+tcpPacket.src_port+",'"+tcpPacket.dst_ip+"',"+tcpPacket.dst_port+","+tcpPacket.ack+","+tcpPacket.ack_num+","+tcpPacket.psh+","+
tcpPacket.rst+","+tcpPacket.syn+","+tcpPacket.sequence+","+tcpPacket.ident+","+tcpPacket.urgent_pointer+")";
//SQL插入语句.表为tcpPacket,接下来是行, values后面括号里的是插入的数据(对应行).
stmt.executeUpdate(insertString); //执行插入数据的SQL语句
}
catch(SQLException ee){
System.out.println("TCPPacket insert Error!"); //异常处理
}
finally{ //最终执行
PacketConnect.close(stmt);//释放此Statement对象的数据库和JDBC资源
PacketConnect.close(con); //释放此Connection对象的数据库和JDBC资源
}
}