当前位置:首页 > 实训专题报告
哈尔滨工程大学本科生专业技能实训专题报告
容以字节数组的形式发送到服务器,使得拥有用户与相应好友之间的聊天记录备份,完成客户端与服务器端数据同步的任务。
2系统实现与测试
2.1 获取好友地址列表模块的实现
本模块需要利用Socket技术进行本模块之间的数据传输,首先需要从服务端获取数据,主要以字节数组的形式进行传输,用户接收到来自服务器的数据后,将字节数组通过相应的转换算法处理为用户信息,最终将用户信息以字符串的形式显示在用户的好友信息列表中,并针对在线与非在线的好友分别进行颜色处理,完成获取好友信息列表这一任务。
2.2好友聊天记录模块的实现 2.2.1好友聊天记录界面
当用户在聊天界面下点击history按钮后就会弹出到历史聊天记录界面,该界面设计如图2.1所示。
图2.1 Linpop系统聊天历史记录界面
2.2.2 好友聊天记录模块的实现
6
哈尔滨工程大学本科生专业技能实训专题报告
好友聊天记录模块主要基于客户端本地数据库,通过本地数据库来存储通讯时产生的聊天记录。由于本聊天软件需要实现多个用户之间的聊天记录的实时存储,因此服务器端要处理多个客户端发来的请求,所以本模块使用了多线程设计。
多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立[4]。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其他线程共享一个存储空间,这使得线程间的通信远较进程简单。
利用多线程技术,用户可以同时与多个好友进行聊天,聊天记录都会被保存到本地数据库中而不会产生冲突[5]。同时,客户端与服务器端之间还存在数据同步的工作线程,检测本地数据库与服务器数据库是否同步,以保证两者之间的数据保持一致。
要实现该模块的数据同步功能,需要在数据服务器上运行数据交换子系统,开启定时器,它的作用是用来设定系统检测数据的频率。出于及时性考虑,如每隔5s对数据库检索,比较用户对象、表结构、数据,把需要发送的数据打包,转化为字节流。调用Socket的连接函数,以服务器指定的IP地址或主机名和端口号为参数,返回一个Socket连接符,在得到Socket连接符的过程中包含了向服务器请求建立通讯连接的过程[6]。建立客户端通讯Socket后,调用函数进行发送和接收数据。对字节流数据按客户端和服务器之间的协议进行处理,完成双方的通讯任务,最后调用关闭函数关闭用于网络通讯的输入输出流[7]。程序通过解析远程数据服务器接收到的字节流,执行相关数据库操作。 2.3 系统测试
2.3.1 获取好友地址列表模块测试
本文利用Linpop聊天软件的一个客户端登录服务器进行了测试,登陆后获取了好友的信息并显示在了好友列表中,效果如图2.2所示。
由图可见好友列表为树形结构具有父节点、子节点和兄弟节点,对应着各个群组下的不同好友。在线的好友也由灰色变味了红色,显示出了在线与非在线好友之间的区别,方便选择好友进行聊天。
7
哈尔滨工程大学本科生专业技能实训专题报告
图2.2 获取好友列表效果图
2.3.2 好友聊天记录模块测试
该模块主要完成显示好友聊天记录的功能。根据该模块功能结构,设计测试用例如表2.1所示。
本模块需要实现准确无误的存储并显示当前用户与任何好友之间的聊天记录,考查了系统对聊天信息的实时存储与读取功能,查看聊天记录效果如图2.3所示。
本文按照用例表对该模块进行测试,所得到的结果与预期结果完全相同,达到需求所提出的标准。系统进行测试的整体界面效果如图2.4所示。
8
哈尔滨工程大学本科生专业技能实训专题报告
图2.3 查看聊天记录截图 表2.1查看本地聊天记录功能测试用例
测试用例 用例描述 局域网内的任意两一对一聊天记录查询 个用户聊天,查看其聊天记录 局域网内的某一用一对多聊天记录查询 户与多个用户进行聊天,查看其聊天记录 局域网内的多个用多对多聊天记录查询 户与多个用户进行聊天,查看其聊天记录
9
测试过程和数据 单击功能按钮查看聊天记录 单击功能按钮查看聊天记录 单击功能按钮查看聊天记录 预期结果 聊天双方的历史记录相同,无遗漏 该用户与聊天用户之间的聊天数据相同,无遗漏 用户与用户之间的聊天数据相同,无遗漏
共分享92篇相关文档