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 + -
显示快捷键?