4)发送表情
客户端A点表情按钮,将出现系统默认表情,选中要发送的表情,表情将在信息框上显示。发送的时候系统自动把表情id编码传给服务器。服务器转发数据,客户端显示的时候根据id取出本地目录下的表情文件现显示在信息框中。
5)发送文件
客户端A点击发送文件按键,从本地选择文件,将与客户端B的一个socket连接,将文件在byte[]数组中的数据通过流传给客户端A。从而实现文件传送。
4.系统设计
4.1设计原则
设计软件不可不考虑到系统重用性很伸缩性,本系统将系统的网络底层,数据传输和界面UI分离开,这样就可以提高系统的伸缩和重用性
本系统最底层是Socket通信层,将负责客户端和服务器之间快速的数据交换,它通过API调用和最上面应用层保持实时数据联系。用户从客户端进入到本系统前,将实现统一的用户登录验证机制。Socket底层设计分两大部分:协议设计和连接处理设计:协议是通过自己定义相关的接口函数,和编码格式定义的。连接处理设计是通过多线程控制。接口层的目的是提供底层和应用蹭一个中介媒体的作用,但是不能设计得太复杂,以免延误数据传送时间。
4.2 工作流程
只有充分地了解了聊天程序的工作流程,才能对整个系统的理解更加深刻,聊天程序的工作流程如图4-2所示。
图4-2聊天程序的工作流程
4.3 数据库设计
这一设计阶段是在需求分析的基础上进行的,目的是设计出能够满足用户需求的各种实体以及它们之间的关系,为逻辑结构设计打下基础。
本系统涉及的数据表
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
`state` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `relation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL,
`relative` int(11) NOT NULL,
`friendids` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
4.4 系统模块设计
4.4.1 聊天系统工作原理图
图 4-2 系统工作原理
4.4.2 系统功能模块图:
图 4-3 系统模块
4.4.3 系统用例图:
普通用户的用例图:
图 4-4 普通用户用例图
4.4.4 活动图:
1)用户登陆活动图
首先填写登陆信息,提交以后服务器会对用户名和密码进行验证。如果不正确,返回一个提示信息。如果登陆成功,就更新在线状态。
图 4-4-4用户登录活动图
2)发送消息活动图
消息发送以后,服务器端对应的监听线程会接收到一个数据包。此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者。如果不在线,就回复客户端显示用户不在线
图 4-4-4发送消息活动图
4.5 系统类设计
4.5.1 服务端线程的设计:
服务器端的核心是对应客户的线程,每个socket对应一个线程,也就是每一个客户端都在服务器端有一个相应的线程。它负责转发客户端发来的消息。服务类为Service。内有各类服务的方法,实现服务端的各种服务,
属性名 作用
public void newUserEnter() 有新用户进入
public void userLeave() java仿QQ局域网聊天软件设计(5):http://www.751com.cn/jisuanji/lunwen_7710.html