《虚拟聊天室(模仿QQ)》实验报告

《虚拟聊天室》简单实验报告

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,此记录安全性不足。应有后台管理,设管理员管理加入的人员。。。。。。

课后有机会,自己会根据上述总结改进此次作业。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值