计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

免费DES算法的可视化程序的实现(一)毕业(6)

2013-06-28 01:04
导读:本模块是应用程序的默认选项,在应用程序初始化的时候,本模块被初始化.该模块实现对用户透明的保密通信.采用C/S结构,服务器端显示信息窗口和客户端显

 本模块是应用程序的默认选项,在应用程序初始化的时候,本模块被初始化.该模块实现对用户透明的保密通信.采用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()); (转载自http://zw.NSEAC.com科教作文网)
 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();

上一篇:免费基于IPv6的下一代校园网设计(一)毕业 下一篇:没有了