📄 cl5_5.java
字号:
import java.net.*;
import java.io.*;
import java.sql.*;
import jpcap.*;
import jpcap.packet.*;
import jpcap.JpcapCaptor;
import jpcap.PacketReceiver;
import jpcap.packet.Packet;
public class cl5_5
{
public static final int port=8000;
public static void main(String args[])
{
String str;
JpcapTip jip;
String str1;//用于保存数据库里的记录
String JDriver="sun.jdbc.odbc.JdbcOdbcDriver";//驱动//建立数据库连接
String constr="jdbc:odbc:hejun";//packet 数据源
try{
Class.forName(JDriver);
}catch(java.lang.ClassNotFoundException e){
System.out.println("init():Driver"+e.getMessage());
}
try{
con= DriverManager.getConnection(constr);
try{
ServerSocket server=new ServerSocket(port);
System.out.println("Started:"+server);
Socket socket=server.accept();
System.out.println("Socket:"+socket);
InputStream fIn=socket.getInputStream();
OutputStream fOut=socket.getOutputStream();
InputStreamReader isr=new InputStreamReader(fIn);
BufferedReader in=new BufferedReader(isr);
PrintStream out=new PrintStream(fOut);
InputStreamReader userisr=new InputStreamReader(System.in);
BufferedReader userin=new BufferedReader(userisr);
while(true){
System.out.println("等待客户端连接........");
if(jip.ip.src_ip.equals(str1)) //检查是否为合法连接
{ System.out.println("合法连接!!建立连接!"); }
else
{System.out.println("非法请求!!关闭连接!");break;}
str=in.readLine();
System.out.println("客户端:"+str);
if(str.equals("end"))break;
System.out.println("给客户端发送:");
str=userin.readLine();
out.println(str);
if(str.equals("end"))break;
}
socket.close();server.close();
}
catch(Exception e){System.out.println("异常"+e);}
}
}
class JpcapTip implements PacketReceiver
{
static int max =200000;//最大抓包数量
static int IP_packet = 0;//ip数据包数量
static int Num_udp =0;
static int Num_tcp =0;
static int Num_icmp =0;
static int length_packet=0;
static int length_udp=0;
static int length_tcp=0;
static int length_icmp=0;
static int bhour,bminuters,bseconds;
static int ehour,eminuters,eseconds;
static int interval;
static StringBuffer str = new StringBuffer("");
static Connection con;
static Statement s ;
static IPPacket ip;
public void receivePacket(Packet packet)
{
if (packet instanceof IPPacket)
{
ip = (IPPacket) packet;
IP_packet++;
length_packet+=ip.length;
switch(ip.protocol)
{
case IPPacket.IPPROTO_TCP: Num_tcp++;break;
case IPPacket.IPPROTO_UDP: Num_udp++;break;
case IPPacket.IPPROTO_ICMP:Num_icmp++;break;
}
str.append(IP_packet+" :"+ip.src_ip.getHostAddress() + "-->" + ip.dst_ip.getHostAddress() + "\t\t" + ip.protocol
+ "\t" + ip.length + "\t" + ip.ident+ "\t" + ip.hop_limit + "\t" + ip.rsv_tos+"\n");
System.out.print(str);
writefile();//将信息写入文件
}
}
public static void init()//初始化连接,创建表,初始化字段
{
String JDriver="sun.jdbc.odbc.JdbcOdbcDriver";//驱动
String constr="jdbc:odbc:hejun";//packet 数据源
try{
Class.forName(JDriver);
}catch(java.lang.ClassNotFoundException e){
System.out.println("init():Driver"+e.getMessage());
}
try{
con= DriverManager.getConnection(constr);
s=con.createStatement();
String query="create table packetaccess ("
+"num integer,"
+"src_ip char(20),"
+"dst_ip char(20),"
+"protocol integer,"
+"length integer,"
+"ident integer,"
+"hop_limit integer,"
+"rsv_tos integer"
+")";
s.executeUpdate(query);
}catch(SQLException e){
System.out.println("init():SQL"+"\t"+e.getMessage() );
}
}
public static void over()//释放连接
{
try{
s.close();
con.close();
}catch(SQLException e){
System.out.println("over()"+"\t"+e.getMessage() );
}
}
public static void writetext()
{
try{
RandomAccessFile rf = new RandomAccessFile("packet.txt", "rw");
rf.seek(rf.length());
rf.writeBytes(str.toString());
rf.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public static void writeaccess()
{
String query="insert into packetaccess values("+IP_packet +",'"
+ip.src_ip.getHostAddress() +"','"
+ip.dst_ip.getHostAddress() +"',"
+ip.protocol +","
+ip.length +","
+ip.ident +","
+ip.hop_limit+","
+ip.rsv_tos +")";
try{
s.executeUpdate(query);
}catch(SQLException e){
System.out.println("writeaccess()"+"\t"+e.getMessage() );
}
}
public static void writefile()
{
writetext();
writeaccess();
str.delete(0, str.length() - 1); // 缓存内容清空//
}
public static void zhuabao( )
{
NetworkInterface devices[] = JpcapCaptor.getDeviceList();
for (int i = 0; i < devices.length; i++)
System.out.println(i+" :"+"(" + devices[i].description+")");
System.out.println("请选择要使用的捕获设备:");
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
String name=keyin.readLine();
JpcapCaptor jpcap = JpcapCaptor.openDevice(devices[Integer.valueOf(name)], 2000, true, 20);
init();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -