时候的服务器端是等待客户端进行连接。
RMI应用的创建
(1)创建远程接口模块:创建远程算法的接口,继承自Java rmi Remote (2)创建远程类:实现远程接口的所有算法
(3)创建服务器端程序:该部分在rmi registry注册表注册远程对象 (4)创建客户端接口:创建可供客户端使用的函数接口 (5)创建客户端类:实现客户端所需要的算法
4.2软件的总体设计与功能
基于Java RMI技术的远程聊天软件总体功能结构分为4个部分:服务器端,客户端,通讯模块,信息回看模块。
图4-1软件工作流程图
4.3服务器端设计与功能。
服务器端程序是远程聊天软件的主要组成部分之一,它主要实现为远程的客户端提供类似于桥的功能。能够为远程的客户端提供连接服务器,断开服务器,广播消息,查看远程消息的功能。 4.3.1服务器端的详细介绍
作为聊天软件的核心部分,承担着各个客户端连接,接收来自客户端的消息,广播客户端的消息,存储来自客户端的信息。
服务器端注册
通过在RMI的注册表中注册IP地址和端口,注册成功后服务器就处于等待连接状态。
(2)服务器广播消息
服务器端接收到信息后,通过广播函数,将某个客户端发来的信息发送给所有的客户端,客户端接收到消息,完成一次聊天。
(3)聊天信息的存储
服务器端接收到消息时,同时会将消息存储到软件的数据库中,将有利于用户查看历史聊天记录
4.3.2客户端程序介绍
客户端是直接与使用软件的用户进行直接的交互,在整个软件的系统中占主导地位。是整个软件系统的主要体现。在客户端上我们能够看到并且使用的功能有,连接到服务器,与服务器断开连接,发送聊天信息,查看历史聊天记录。 (1)连接到服务器
用户通过在服务器的姓名输入框中输入自己的姓名后,点击连接按钮与服务器建立联系,服务器会在这时候向聊天室的其他所有用户发送该用户加入聊天的信息,用户就可以发行聊天信息了。 (2)发送聊天信息
用户在于服务器建立有效的连接之后,在输入框中输入相应的聊天信息后 点击发送,服务器就可以将信息进行广播,让每一个在聊天室里的用户都可以 接受到聊天信息
(3)查看历史聊天记录
用户在结束聊天后可点击查看历史消息按钮查看所有聊天记录。 (4)断开与服务器连接
用户如果想结束聊天,只要点击断开连接按钮就可以退出聊天室,此时服务器会向所有用户发送该用户的退出消息。 4.4本章小结
本章主要介绍了软件的整个设计过程,主要技术的实现。讲述了RMI远程技术是如何搭建的,软件的框架构,整体运行流程,软件的连个主要核心部分的功能。通过设置本章,将有利于读者和用户了解和使用本聊天软件,能够让非专业的用户轻松地了解软件的运行过程和相关的功能。本章设计的必要性非常重要。
5.软件的主要设计实现
5.1软件开发环境的搭建
(1)JDK的安装,本软件的设计语言是Java开发语言,计算机环境需要有JVM支持,此次安装的JDK版本是1.8.0版本,安装完后在对环境变量进行配置其中有JAVAHOME PATH CLASSPATH等环境变量。
(2)MyEclipse安装,在windows7平台下安装软件,并设计代码,并导入相应的驱动包(jar包)。
5.2软件实现思路
经过上述的综合分析,基于Java RMI的远程聊天系统是客户端和服务器端通过TCP/IP协议进行通信的。所以需要两个独立的程序客户端和服务器端。软件的整体流程,在服务器端启动后,客户端的用户只要启动客户端程序,然后在最上部的对话框中输入用户姓名,点击连接按钮,此时只要网络没有问题用户就可以有效的连接到服务器上,这时候服务器会对已经在聊天室中的用户发送新用户加入的提示,此时就可以进行聊天了。
5.2.1服务器端设计 (1)服务器端设计
public interface Chatv2Server extends Remote{
public void addClient(Chatv2Client client,String msg) throws RemoteException;//定义添加函数
public void removeClient(Chatv2Client client,String msg) throws RemoteException;//删除用户函数
public void sendMessage(Chatv2Client client,String msg) throws RemoteException;发送信息函数
public void savve(Chatv2Client client,String name,String msg)throws RemoteException;//保存聊天信息函数
public void checkinfosavve(Chatv2Client client)throws RemoteException;
}//查看聊天记录函数 (2)远程接口的实现
//定义远程调用类,继承接口Chatv2Server
public class Chatv2ServerImpl extends UnicastRemoteObject implements Chatv2Server {
ArrayList list;
protected Chatv2ServerImpl() throws RemoteException { super();
list=new ArrayList(); }
@Override
//定义addClient函数
public void addClient(Chatv2Client client, String msg) throws RemoteException { if(!list.contains(client)){
for(int i=0;i sendMessage((Chatv2Client)list.get(i),msg); } list.add(client); } } @Override //定义removeClient函数 public void removeClient(Chatv2Client client, String msg) throws RemoteException { if (list.contains(client)){ for(int i=0;i sendMessage((Chatv2Client)list.get(i),msg); } list.remove(client); } } @Override //定义sendMessage函数,主要用于广播信息 public void sendMessage(Chatv2Client client, String msg) throws RemoteException { if(!list.contains(client)) return; for(int i=0;i if(user==null ||user==\ user=\ } ((Chatv2Client)list.get(i)).sendMessage(user+\\ } } @Override //定义savve函数,用于存储聊天信息 public void savve(Chatv2Client client, String name, String msg) throws RemoteException { String user= new String(); String ms=new String(); user=name; ms=msg; Addinfo addin=new Addinfo(); addin.insert(user, ms); } @Override //定义checkinfosavve函数,用于查看聊天记录 public void checkinfosavve(Chatv2Client client) throws RemoteException { infoshow showw=new infoshow(); showw.check(); } (3)服务器端注册 public static void main(String[] args) { try{ // ChatServerImpl server=new ChatServerImpl(); // Naming.bind(\ // System.out.println(\ String url=\ //链接地址 LocateRegistry.createRegistry(8888); Chatv2ServerImpl server=new Chatv2ServerImpl(); Naming.rebind(url, server); System.out.println(\ } catch(Exception e) { 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于远程方法调用的聊天室软件设计与实现—毕业论文(4)在线全文阅读。
相关推荐: