⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cl5_5.java

📁 一个很好的局域网的TCP通信。。可以实现两个人简单的聊天通信。相当于一个没有传送功能的小飞鸽了
💻 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 + -