本模块是应用程序的默认选项,在应用程序初始化的时候,本模块被初始化.该模块实现对用户透明的保密通信.采用C/S结构,服务器端显示信息窗口和客户端显示信息窗口集成在同一个显示面板上.单击启动服务器按钮,将创建一个服务器端SOCKET,并在端口2007上监听.单击启动客户端,经过TCP/IP三次握手以后将建立一个与服务器端的连接,在这之间,服务器端和客户端便有了一条数据通信通道,服务器和客户端之间可以正常交换信息.在输入框中输入想要发送的消息然后单击发送按钮,在产生这个事件时应用程序会做两件事,一个是发送端启动发送线程,在发送数据之前首先用DES类的加密接口对发送的数据进行加密,然后再调用SOCKET的发送消息函数,发送加密后的消息.两外一个工作是启动对端的接收线程,因为我们的目的是在发送端每发送一条消息时我们都希望对方能显示该消息.对端接收线程的主要任务是从SOCKET数据线路上获取消息,对调用DES解密接口对消息解密,然后在显示在用户界面上.其运行效果图如图3-1所示:
该功能模块实现的代码如下所示:
public class ComFacade extends Panel implements ActionListener,Runnable{
Panel Pserver,Pclient;Button SYes,SNo,SInit,CYes,CNo,CInit;
TextArea SShow,CShow;TextField SMessage,CMessage;
Box basic,Bserver,Bclient;
Thread ThreadServerSend,ThreadServerReceive,ThreadClientSend,ThreadClientReceive;
ServerSocket server;Socket Sclient,Cclient;DataInputStream Sin,Cin;DataOutputStream Sout,Cout;
String s;boolean flag=true;Des des=new Des();
public ComFacade()
{
Bserver=Box.createVerticalBox();Bclient=Box.createVerticalBox();
Pserver=new Panel();Pserver.setLayout(new BorderLayout());Pclient=new Panel();
Pclient.setLayout(new BorderLayout());
SShow=new TextArea("",30,50,TextArea.SCROLLBARS_HORIZONTAL_ONLY);
CShow=new TextArea("",30,50,TextArea.SCROLLBARS_HORIZONTAL_ONLY);
SMessage=new TextField(35);SYes=new Button("发送");SYes.addActionListener(this);
SNo=new Button("取消");SNo.addActionListener(this);SInit=new Button("启动服务器");
SInit.addActionListener(this);CYes=new Button("发送");CYes.addActionListener(this);
CNo=new Button("取消");CNo.addActionListener(this);CInit=new Button("启动客户端");
CInit.addActionListener(this);CMessage=new TextField(35);Panel SControl=new Panel();
Panel CControl=new Panel();SControl.setLayout(new FlowLayout());
SControl.add(SMessage,FlowLayout.LEFT);SControl.add(SYes);SControl.add(SNo);
CControl.setLayout(new FlowLayout());CControl.add(CMessage,FlowLayout.LEFT);
CControl.add(CYes);CControl.add(CNo);Pserver.add(SShow,BorderLayout.NORTH);
Pserver.add(SControl,BorderLayout.SOUTH);Pclient.add(CShow,BorderLayout.NORTH);
Pclient.add(CControl,BorderLayout.SOUTH);Panel S=new Panel();Panel C=new Panel();
S.add(new Label("服务端"),BorderLayout.CENTER);S.add(SInit);Bserver.add(S);Bserver.add(Pserver);
C.add(new Label("客户端"),BorderLayout.CENTER);C.add(CInit);Bclient.add(C);
Bclient.add(Pclient);basic=Box.createHorizontalBox();basic.add(Bserver);
basic.add(Box.createVerticalStrut(200));basic.add(Bclient);add(basic);
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==SYes)
{ ThreadServerSend=new Thread(this);ThreadServerSend.start();
ThreadClientReceive=new Thread(this);ThreadClientReceive.start();
}//处理服务器发送消息else if(e.getSource()==CYes)
{ ThreadClientSend=new Thread(this); ThreadClientSend.start();
ThreadServerReceive=new Thread(this); ThreadServerReceive.start();
首页 上一页 3 4 5 6 7 8 9 下一页 尾页 6/9/9
免费DES算法的可视化程序的实现(六)由毕业论文网(www.huoyuandh.com)会员上传。