基于RMI技术的远程词典应用Word格式文档下载.docx

上传人:wj 文档编号:13015469 上传时间:2022-10-02 格式:DOCX 页数:6 大小:34.25KB
下载 相关 举报
基于RMI技术的远程词典应用Word格式文档下载.docx_第1页
第1页 / 共6页
基于RMI技术的远程词典应用Word格式文档下载.docx_第2页
第2页 / 共6页
基于RMI技术的远程词典应用Word格式文档下载.docx_第3页
第3页 / 共6页
基于RMI技术的远程词典应用Word格式文档下载.docx_第4页
第4页 / 共6页
基于RMI技术的远程词典应用Word格式文档下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

基于RMI技术的远程词典应用Word格式文档下载.docx

《基于RMI技术的远程词典应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于RMI技术的远程词典应用Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。

基于RMI技术的远程词典应用Word格式文档下载.docx

8)启动服务器;

9)启动客户,完成应用。

3.基于RMI技术的远程词典应用的实现

在实现基于RMI技术的远程词典应用的过程中,主要实现了三部分:

定义的远程接口,实现远程接口以及服务器端应用服务实现,应用客户端的图形实现。

(1)远程接口的实现

在远程接口的类中,声明了一个返回字符串的translator方法。

实现的代码如下:

packagetranslatorInterface;

importjava.rmi.Remote;

importjava.rmi.RemoteException;

/**

*@author苑仁群

*@since2012.6.4

*/

publicinterfaceTranslatorInextendsRemote{

*

*@paramword输入待查询的单词

*@return返回所查单词的结果

*@throwsRemoteException

publicStringtranslator(Stringword)throwsRemoteException;

}

(2)应用服务端实现

在应用服务端实现了定义的远程接口,并且进行了服务端端口的注册,以及通信路径的

注册。

实现定义的远程接口的代码如下:

packageserver;

importjava.rmi.server.UnicastRemoteObject;

importjava.util.HashMap;

importjava.util.Map;

importtranslatorInterface.TranslatorIn;

publicclassTranslatorImextendsUnicastRemoteObjectimplementsTranslatorIn{

privatestaticfinallongserialVersionUID=1L;

privateMap<

String,String>

dic=newHashMap<

();

protectedTranslatorIm()throwsRemoteException{super();

dic.put("

distribution"

"

n.分布;

分配"

);

dic.put("

system"

n.系统;

方法;

制度,体制"

@Override

publicStringtranslator(Stringword){

Stringresult=null;

result=dic.get(word);

if(result==null||result.equals("

"

))

result="

抱歉,您查找的单词不存在"

;

returnresult;

进行服务端口注册以及通信路径注册的代码如下:

import.MalformedURLException;

importjava.rmi.AlreadyBoundException;

importjava.rmi.Naming;

importjava.rmi.registry.LocateRegistry;

importtranslatorInterface.TranslatorIn;

publicclassServer{

public static void main(String arg[]) throws MalformedURLException,AlreadyBoundException{

try{

TranslatorIndicServer=newTranslatorIm();

LocateRegistry.createRegistry(10002);

//注册通信端口Naming.bind("

rmi:

//127.0.0.1:

10002/dicServer"

dicServer);

//注册通信路径

}catch(RemoteExceptione){e.printStackTrace();

(3)客户端应用的实现

客户端实现的代码中,其核心方法主要为查找通信路径的Naming.lookup()方法,其代码如下:

packageclient;

importjava.awt.BorderLayout;

importjava.awt.EventQueue;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjavax.swing.BoxLayout;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

importjavax.swing.JTextField;

importjavax.swing.JTextArea;

importjavax.swing.JLabel;

publicclassDicClient{

privateJFrameframe;

privateJTextFieldword;

privateTranslatorIntranslatorIntf;

privateJTextAreafindResult;

privateJPanelpanel_1;

privateJLabellblNewLabel;

privateJLabellblNewLabel_1;

publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){

publicvoidrun(){try{

DicClientdicClient=newDicClient();

dicClient.frame.setVisible(true);

}catch(Exceptione){e.printStackTrace();

});

publicDicClient(){initialize();

try{

translatorIntf=(TranslatorIn)Naming.lookup("

}catch(Exceptione){

findResult.setText("

暂时无法连接到服务器,服务器可能没有运行!

*窗口的初始化

privatevoidinitialize(){

frame=newJFrame();

frame.setTitle("

欢迎使用词典客户端^_^"

frame.setBounds(100,100,300,300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanelpanel=newJPanel();

frame.getContentPane().add(panel,BorderLayout.NORTH);

panel.setLayout(newBoxLayout(panel,BoxLayout.X_AXIS));

lblNewLabel_1=newJLabel("

请输入单词:

panel.add(lblNewLabel_1);

word=newJTextField();

panel.add(word);

word.setColumns(8);

JButtonbtnTrans=newJButton("

查询"

btnTrans.addMouseListener(newMouseAdapter(){

publicvoidmouseClicked(MouseEventarg0){Stringkeywords=word.getText();

if(keywords.trim().isEmpty()||keywords.trim().equals("

||keywords.trim()==null)findResult.setText("

输入的单词不能为空"

else{

Stringmeaning=translatorIntf.translator(keywords);

findResult.setText(meaning);

}catch(Exceptione){translatorIntf=null;

暂时无法连接到服务器,服务器可能没有运行!

panel.add(btnTrans);

panel_1=newJPanel();

frame.getContentPane().add(panel_1,BorderLayout.CENTER);

panel_1.setLayout(newBorderLayout(0,0));

lblNewLabel=newJLabel("

查询结果:

panel_1.add(lblNewLabel,BorderLayout.NORTH);

findResult=newJTextArea();

findResult.setEditable(false);

panel_1.add(findResult,BorderLayout.CENTER);

4.运行界面

1.没有启动服务端时,客户端的运行界面如下:

2.启动服务器后,客户端的运行界面如下

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1