《虚拟聊天室》简单实验报告
0、背景
本周java老师布置的java作业是用中介者模式,写一个虚拟聊天室。具体作业题目截图如下:
在类图已经给出的前提下,此作业很容易完成。所以此次自己改进了这次作业。下面是具体内容
一、功能需求描述:
此为基于C/S模式的虚拟聊天室程序,模仿QQ。聊天室共分为服务器端和客户端两部分。服务器端程序主要负责侦听客户端发来的消息,客户端需登录到服务器才可以实现正常的聊天功能。
1、服务器端的主要功能如下:
(1)在特定端口上进行侦听,等待客户端连接
(2)客户可以配置服务器端的侦听端口,默认端口为8888
(3)向已经连接到服务端的用户发送系统消息
(4)统计在线人数
(5)当停止服务时,断开所有的用户连接
2、客户端的主要功能如下:
(1)连接到已经开启聊天服务的服务端
(2)用户可以配置要连接服务器端的IP地址与端口号
(3)用户可以配置要连接后显示的用户名
(4)当服务器端开启的话,用户可以随时登录与注销
(5)用户可以向所有人或某一个发送消息。
二、总体设计
1、聊天室服务器端设计
聊天室服务器端主要包括7个文件,它们的功能如下。
(1)ChatServer.java
包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端的消息收发。
(2)ServerListen.java
该类实现服务器端用户上线与下线的侦听。该类对用户上线下线的侦听是通过调用用户链表类(UserLinkList)来实现的,当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。
(3)ServerReceive.java
该类是实现服务器消息收发的类。该类分别定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面类的界面上。
(4)PortConf.java
该类继承自JDialog,是用户对服务器端侦听端口进行修改配置的类。
(5)Node.java
用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点Node类的功能相当。
(6)UserLinkList.java
用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户5个方法。
(7)Help.java
服务器端程序的帮助类
2、聊天室客户端设计
该聊天室客户端主要包括5个文件,它们的功能如下:
(1)ChatClient.java
包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。该类定义了Connect()与DisConnect()方法实现与服务器的连接与断开连接。当登录到制定的服务器时,调用ClientReceive类实现消息收发,同时该类还定义了SendMessage()方法来向其他用户发送带有表情的消息或者悄悄话。
(2)ClientReceive.java
该类是实现服务器端与客户端消息收发的类
(3)ConnectConf.java
该类继承自JDialog,是用户对所要连接的服务器IP及侦听端口进行修改配置的类。
(4)UserConf.java
该类继承自JDialog,是用户对连接到服务器时所显示的用户名进行修改配置的类
(5)Help.java
客户端程序的帮助类
三、详细设计
具体代码根据上述.java文件进行代码填充,因为代码比较长,所以此次就不附上了。
四、实验结果截图
服务器端截图
客户端截图
有三个客户端同时被打开
用户孙琨的客户端
用户李万军的客户端
用户郭培雷的客户端
电脑底部状态栏界面
五、总结
本次实验主要参考资料为《Java课程设计案例精编》,以及百度知道。在学习过程中,对于网络编程有了一定的理解。此次作业优点基本实现了功能需求中的描述。缺点是:1,用户聊天记录没有保存功能,应加上数据库。2,表情符号有待改进。目前只有简单的相应文字说明。3,用户信息不完整。没有注册,登录等功能。4,此记录安全性不足。应有后台管理,设管理员管理加入的人员。。。。。。
课后有机会,自己会根据上述总结改进此次作业。