java仿QQ局域网聊天软件设计(5)
时间:2017-05-23 22:53 来源:毕业论文 作者:毕业论文 点击:次
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() (责任编辑:qin) |