cconnfriendframe.java

来自「windows系统下用java开发的网络入侵检测程序」· Java 代码 · 共 296 行

JAVA
296
字号
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
/**
 * The connected JIDX Client peer's window. The user can send message to the peer throw 
 * this window.
 * <p>
 * 2005.9.10
 * @version 0.1.2
 * @author Daxin Tian
 *
 */
public class CconnFriendFrame extends Frame implements ActionListener,Runnable{

	/**
	 * JAVA MenuBar which will contain "Control" and "Information" Menu.
	 */
	MenuBar menubar;
	/**
	 * Menu Control. Includes MenuItem item_sendIDMEF,item_exit.
	 */
	Menu menuEnter1;
	/**
	 * Menu Information. Includes MenuItem item_friendinfo,item_friendips.
	 */
	Menu menuEnter2;
	/**
	 * MenuItem "Send IDMEF File". Open CsendIDMEF.
	 */
	MenuItem item_sendIDMEF;
	/**
	 * MenuItem "Peer Signature". Show peer's Signature.
	 */
	MenuItem item_friendinfo;
	/**
	 * MenuItem "Peer IP address". Show peer's IP address.
	 */
	MenuItem item_friendips;
	/**
	 * MenuItem "Exit". Close the window.
	 */
	MenuItem item_exit;
	/**
	 * Client's self name.
	 */
	String myname_s;
	/**
	 * Connected JIDX Client peer's name.
	 */
	String friendname_s;
	/**
	 * Connected JIDX Client peer's signature.
	 */
	String friendinfo_s;
	/**
	 * Connected JIDX Client peer's IP address.
	 */
	String friendips_s;
	/**
	 * The socket is used to connect to the JIDX Client peer.
	 */
	Csocket cs_friend;
	/**
	 * Used to contain XML message.
	 */
	StringBuffer c_sb=new StringBuffer();
	
	//public List l_connfriend=new List(5);2005.10.22 22:07
	/**
	 * This point to the CaddFriendFrame, which open this CconnFriendFrame.
	 */
	CaddFriendFrame c_caff;
    /**
     * Which will be open when MenuItem "Send IDMEF File" is clicked.
     */
    CsendIDMEF c_sf;
    
    /**
     * This thread is used to continue to listen to the connected JIDX Client peer's back
     * message.
     */
	Thread cff_thread;
	
	/**
	 * Parse JIDX Client peer to peer's XML message.
	 */
	ClientXMLParser cxp=new ClientXMLParser();
	/**
	 * Received peer's back XML message.
	 */
	String cc_in=null;
	
	/**
	 * 
	 * @param myname Client's self name.
	 * @param friendname Connected JIDX Client peer's name.
	 * @param info Connected JIDX Client peer's signature.
	 * @param ips Connected JIDX Client peer's IP address.
	 * @param caff This point to the CaddFriendFrame, which open this CconnFriendFrame.
	 */
	CconnFriendFrame(String myname,String friendname,String info,String ips,CaddFriendFrame caff)
	{
		super(friendname);
		setBounds(200,100,300,300);
		myname_s=myname;
		friendname_s=friendname;
		friendinfo_s=info;
		friendips_s=ips;
		c_caff=caff;
		
		
		c_sf=new CsendIDMEF(this);
		
		menubar=new MenuBar();
		menuEnter1=new Menu("Control");
		menuEnter2=new Menu("Information");
		item_sendIDMEF=new MenuItem("Send IDMEF File");
		
		item_friendinfo=new MenuItem("Peer Signature");
		item_exit=new MenuItem("Exit");
		item_friendips=new MenuItem("Peer IP address") ;
		
		menuEnter1.add(item_sendIDMEF);
		menuEnter1.add(item_exit);
		menuEnter2.add(item_friendinfo);
		menuEnter2.add(item_friendips);
		menubar.add(menuEnter1);
		menubar.add(menuEnter2);
		setMenuBar(menubar);
		
		item_sendIDMEF.addActionListener(this);
		item_exit.addActionListener(this);
		item_friendinfo.addActionListener(this);
		item_friendips.addActionListener(this);
		
		cs_friend=new Csocket();
		cff_thread=new Thread(this);
		cff_thread.setPriority(Thread.MAX_PRIORITY);
		
		//System.out.println("friendips: "+friendips_s);
		if(cs_friend.Cconnect(friendips_s,58596))
		{
			setVisible(true);
			c_sb.append("<msg><send_myname><name>"+myname_s+"</name></send_myname></msg>");
			
			try
			{
				cff_thread.start();
				cs_friend.c_dos.writeUTF(c_sb.toString());
			}
			catch(IOException e)
			{
				
			}
			
		}
		addWindowListener(new WindowAdapter()
				  {public void windowClosing(WindowEvent e)
				  	{close();}
				  }
				);
		
	}
	/**
	 * Listen MenuItem's click action.
	 */
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==item_friendinfo)
		{
			MsgDialog msgdia=new MsgDialog();
			msgdia.show(friendinfo_s);
			
		}
		if(e.getSource()==item_friendips)
		{
			MsgDialog msgdia=new MsgDialog();
			msgdia.show(friendips_s);
			
		}
		
		if(e.getSource()==item_sendIDMEF)
		{
			c_sf.b_send.setEnabled(true);
			c_sf.b_cancel.setEnabled(false);
			c_sf.ta_msg.setText("");
			c_sf.tf_path.setText("");
			//c_sf.tf_size.setText("");
			c_sf.p_bar.setValue(0);
			c_sf.setVisible(true);		
		}
		if(e.getSource()==item_exit)
		{
			close();		
		}
	}
	/**
	 * The thread continued to read the peer's back messages and transact them.
	 */
	public void run()
	{
		while(true)
		{
			try
			{
				cc_in=cs_friend.c_dis.readUTF();
				//System.out.println(cc_in);
				cc_parser();
			}
			catch(IOException e)
			{
				
				close();
				break;
			}
		}
		
	}
	/**
	 * 
	 *Close the connection to the peer and close the window.
	 */
	public void close()
	{
		cs_friend.Cclose();
		int n=c_caff.l_openedfriendname.getItemCount();
		
		for(int j=0;j<n;j++)
		{
			if(c_caff.l_openedfriendname.getItem(j).equals(friendname_s))
			{
				c_caff.l_openedfriendname.remove(j);
				c_caff.l_openedfriend.remove(j);
				break;
			}
		}
		
		
		setVisible(false);
	}
	/**
	 * Use ClientXMLParser parse XML message.
	 *
	 */
	public void cc_parser()
	{
		cxp.in=new StringBufferInputStream(cc_in);
		cxp.parser();
		if(cxp.ackfile_b)
		{
			cxp.ackfile_b=false;
			if(cxp.acknum_i>0)
			{
				//System.out.println("comm"+cxp.acknum_i);
				c_sf.prepare_send(cxp.acknum_i);
			}
			if(cxp.acknum_i==-3)
			{
				c_sf.reject_receive=false;
				c_sf.send_file();
			
			}
			if(cxp.acknum_i==-1)
			{
				c_sf.reject_receive=true;
				c_sf.send_file();
			}
			if(cxp.acknum_i==0)
			{
				new MsgDialog().show("Succeed in sending file");
				c_sf.b_send.setEnabled(true);
				c_sf.b_cancel.setEnabled(false);
				c_sf.tf_path.setText("");
				//c_sf.tf_size.setText("");
				c_sf.p_bar.setValue(0);
				//c_sf.ta_msg.setText("");
			}
			if(cxp.acknum_i==-2)
			{
				c_sf.stop_send=true;
				c_sf.b_send.setEnabled(true);
				c_sf.b_cancel.setEnabled(false);
				c_sf.tf_path.setText("");
				//c_sf.tf_size.setText("");
				c_sf.p_bar.setValue(0);
				//c_sf.ta_msg.setText("");
				new MsgDialog().show("Failed in sending file");
			}
			
		}
		
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?