一、实验名称
远程过程调用
二、实验内容
利用RMI技术构件远程会话,两个客户端发送消息到服务器端,服务器中转发送给相应客户,进行远程会话。
三、实验目的
熟悉掌握RMI技术,理解其工作原理并能熟悉使用
四、实验环境
IDEA、JAVA JDK1.8
五、实验内容
RMI工作原理:服务器端提供服务,服务中要暴露可以调用的远程方法,以接口的形式表现,这样在客户端可以通过服务接口来调用远程方法,实现复杂的业务逻辑。在服务器端,首先要对接口中提供的方法实现,以便客户端调用能够完成一定的业务逻辑;接着需要生成Skeleton,在Skeleton中真正地实现了对商业方法的调用,完成了客户请求的调用的过程,将获取到的调用方法的结果通过序列化机制返回给客户端,进行应答。在客户端,通过Stub来接收服务器返回的数据(对象),即在这里进行了反序列化,也就是读取网络传输的字节流,进而进行重构。
图片1.png
之后,开发接口的实现类RmiChat,在此类中,需要实现Chat接口中定义的方法,考虑到聊天功能的同步性以及双向性,这里需要设置一个监听事件来作为发送消息和接收消息的应答,同时在本地9000端口注册rmi对象并开始监听。
如图为设置监听器与注册rmi对象的部分代码:
图片2.png
最后再按照老师所给样例实现server端与client端即可。测试结果如下:
图片3.png
图片4.png
其中,绿色字体表示自己发出的消息,箭头指向字体表示收到消息。
六、实验总结
经过本次实验,了解到了rmi技术的工作原理以及实现过程。在完成实验的过程中,要注意Client与Server注册的端口号要一致,同时要注意policy.txt文件的配置问题。