📄 使用rmi技术实现的聊天室.htm
字号:
<html>
<head>
<title>
使用RMI技术的聊天系统
</title>
</head>
<body bgcolor="#FFEEFF">
<h1><font face="幼圆">使用RMI技术实现的聊天系统</font></h1>
<hr>
<ul>
<li>
<font size="4" face="幼圆">
这个使用RMI技术实现的聊天系统有两个部分组成:一个服务器ChatServer和一个客户端ChatClient。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
ChatServer通过一个定义好的接口给客户端提供服务。服务器将提供的服务注册到本地的名字服务器上等待调用。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
客户端通过查询对应的名字服务器,建立好服务器对象的引用,然后再使用标准接口和服务器应用通信,就好像引用的服务器对象实例在客户机上一样。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
通过RMI技术实现聊天系统,一个很大的优势就是本系统还可以在服务器和客户机以及客户机之间传递对象:在调用send方法的时候,客户端可以往服务器传送一个Packet类型的对象,这个对象包含两个简单的字符串,其中一个表示客户端的名称,另外一个用来传递消息。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
在login方法被调用的时候,还需要传递一个IChatClient对象。客户端用ChatClient类来对自己做出说明,并在登记过程中将这个对象传给服务器。但是,服务器不仅仅需要一个客户端的说明,它更需要一个客户端对象的引用来通过RMI方法调用来发送聊天消息。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
于是,ChatClient对象也必须是一个从Remote类继承下来的可远程访问的对象。(通常的对象,例如字符串或者Packet对象,它们在做为方法调用的参数传递的时候会传递它们的一份拷贝,而实现Remote接口的对象在做为方法参数被传递的时候只传递一个对象引用)<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
此后,服务器就可以使用RMI技术来远程调用ChatClient的对象来给这个客户端发送有新参与者(receiveEnter方法)或者新消息(receiveMessage方法)到来的信息。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
服务器端必须维护相当数量ChatClient来转发到来的聊天信息,在管理这些ChatClient上,采用了Hashtable。服务器维护着这些远程对象的引用,这样我们就可以采用RMI技术来调用这些对象的方法。鉴于ChatClient也可以被服务器采用回调的方式作远程调用,ChatClient本身也必须作为一个RMI的服务器来实现。<br>
</font>
</li>
<font size=3>
<br/>
</font>
<li>
<font size="4" face="幼圆">
注:利用RMI技术实现分布式系统为我们提供了很大的便利……</font>
</li>
</ul>
<p><font size="4" face="幼圆">
<!--webbot bot="Timestamp" startspan S-Type="EDITED"
S-Format="%Y-%m-%d %H:%M" -->2006-09-02 16:41<!--webbot bot="Timestamp"
I-CheckSum="25422" endspan -->
</font></p>
<ul>
<font size=3>
<br/>
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -