在SOCKET的环境下开发网络聊天系统毕业论文
2021-12-08 21:52:22
论文总字数:36382字
摘 要
本文使用 Java Socket中TCP阻塞I/O编程实现了一款聊天系统,然后在优化部分分别使用多种优化方案进行优化,并用UDP协议和Netty实现了聊天系统的核心功能,再对二者进行性能测试,然后根据二者表现与经典阻塞I/O编程比较,所得结果对于今后实现高可用的即时通信具有重要参考价值,此外对于扩展,比如泛社交化、云服务化和在消息队列上的应用,也是时下热门研究话题。
论文主要研究了 TCP/IP 在即时通信方面的应用,通过对经典阻塞I/O编程和一些优化方案的性能比较,得出了明确的结论。
研究结果表明:对于小数据、高质量链路的通信UDP表现较好,对于稳定性则是 TCP 表现比较出色,针对复杂的应用场景,二者折中是一种比较合理的解决方案,并且,Netty无论是错误率,还是吞吐量,都是高并发系统的最佳选择。
本文的特色:论点突出、逻辑清楚,在实现中系统功能的可拓展性、实现系统功能方法的多样性以及优化方法的针对性也是一大亮点。
关键词:即时通信;Socket编程;TCP/IP;阻塞I/O;消息队列
Abstract
This thesis uses TCP blocking I/O programming of Java to implement a chat system, and then uses a variety of optimization solutions to optimize in the optimization section. Then it uses UDP protocol and Netty to develop the core functions of the chat system. And performing performance test on both them is to compare with the classic blocking I/O programming. The results obtained have important reference value for realizing high-availability instant messaging in the future. In addition, for expanding the system, some methods such as pan-socialization, cloud service, and message queue are also hot research topic nowadays.
The thesis mainly studies the application of TCP/IP in instant communication, and draws clear conclusions through the performance of classic blocking I/O and some optimization schemes.
The research results show that UDP performs well for small data and high-quality communication, and TCP performs better for stability. For complex application scenarios, the compromise between the two is a more reasonable solution. And Netty is the best choice for high concurrency systems regardless of error rate or throughput.
The characteristics of this article is that the argument is prominent and the logic is clear. The scalability of the system function in the implementation, the diversity of the method of implementing the system function and the targetedness of the optimization method are also a highlight.
Key Words:Instant communication;Socket programming;TCP / IP; Blocking I / O;Message queue
目 录
第1章 绪论 1
1.1 研究的背景、目的及意义 1
1.1.1 研究的背景 1
1.1.2 研究的目的及意义 1
1.2 国内外研究现状 2
1.2.1 国外研究现状 2
1.2.2 国内研究现状 2
1.3 研究内容 3
1.4 研究预期目标 3
第2章 需求分析 4
2.1 市场调查 4
2.2 用户行为调查 5
2.3 用户需求分析 5
2.3.1 功能性需求 8
2.3.1.1 用户模块 8
2.3.1.2 会话模块 9
2.3.1.3 消息模块 9
2.3.1.4 其他模块 9
2.3.2 非功能性需求 9
2.3.2.1 性能需求 9
2.3.2.2 可靠性需求 9
2.3.2.3 易用性需求 9
2.3.2.4 安全性需求 10
2.3.2.5 运行环境需求 10
2.3.2.6 可保障性需求 10
第3章 系统设计和实现 11
3.1 系统概要设计 11
3.1.1 需求系统设计 11
3.1.2 服务器框架设计 12
3.1.3 客户端框架设计 14
3.2 系统详细设计与实现 14
3.2.1 服务器实现问题 14
3.2.1.1 稳定性 14
3.2.1.2 吞吐量 16
3.2.1.3 事务管理 16
3.2.2 客户端实现问题 17
3.2.2.1 Android设备兼容性 17
3.2.2.2 Android性能消耗问题 17
3.2.2.3 Android网络问题 17
3.2.3 系统详细实现 18
3.2.3.1 注册功能实现 18
3.2.3.2 登录功能实现 19
3.2.3.3 查找用户或群组功能实现 20
3.2.3.4 添加好友功能实现 20
3.2.3.5 删除好友功能实现 21
3.2.3.6 创建群组功能实现 22
3.2.3.7 添加群组功能实现 23
3.2.3.8 删除群组功能实现 24
3.2.3.9 同意或拒绝添加请求功能实现 25
3.2.3.10 创建会话功能实现 26
3.2.3.11 会话管理功能实现 27
3.2.3.12 发送消息功能实现 27
3.2.3.13 接收消息功能实现 28
3.2.3.14 其他功能实现 29
第4章 系统测试 31
4.1 系统黑盒测试 31
4.1.1 注册功能测试 31
4.1.2 登录功能测试 31
4.1.3 查找用户或群组功能测试 31
4.1.4 添加好友功能测试 33
4.1.5 删除好友功能测试 33
4.1.6 创建群组功能测试 34
4.1.7 添加群组功能测试 34
4.1.8 删除群组功能测试 35
4.1.9 同意或拒绝添加请求功能测试 35
4.1.10 创建会话功能测试 35
4.1.11 删除会话功能测试 36
4.1.12 发送消息功能测试 36
4.1.13 接收消息功能测试 37
4.2 系统性能测试 37
第5章 系统优化 39
5.1 运行环境优化 39
5.1.1 硬件选配优化 39
5.1.2 操作系统层面优化 39
5.1.3 开发语言优化 39
5.2 通用开发技术优化 40
5.2.1 TCP通信优化 40
5.2.1.1 TCP在即时通信中的弊端 40
5.2.1.2 UDP在即时通信中的优点 41
5.2.1.3 UDP实现聊天系统核心功能 41
5.2.1.4 UDP的性能表现 41
5.2.2 拉取模式优化 42
5.2.3 MongoDB数据库优化 43
5.2.3.1 MongoDB查询及配置优化 43
5.2.3.2 使用Redis缓存优化 43
5.2.3.3 使用图数据库优化 43
5.2.4 BIO编程模型优化 44
5.2.5 线程模型优化 45
5.2.6 服务器单机优化 45
5.2.6.1 云服务器扩展单机 45
5.2.6.2 分布式服务器负载均衡问题 46
5.2.7 协议解析优化 46
5.2.7.1 协议加密解密 46
5.2.7.2 协议编码优化 46
5.2.7.3 协议编码压缩 46
5.3 即时通信与消息队列的关系 47
第6章 结论 48
参考文献 49
致谢 50
第1章 绪论
- 研究的背景、目的及意义
1.1.1 研究的背景
近年来,依托于通讯技术的飞速发展,人们的生活方式也发生了巨大的变化,尤其是人们的通讯方式。从人类的历史进程来看,人们对于通讯交流的认识也从侧面反映了当时的生活习惯以及科技水平。
随着互联网时代的到来,人类有了更多的通讯方式,有了更多的信息编码方式,现如今,我们有了电子邮件,有了其他的通信软件,尤其是依托于社交功能的即时通信软件的势头不容小觑。人类的历史离不开交流,离不开通讯,现在互联网环境鱼龙混杂,即时通信已经作为国家基础互联网软件之一,在一定程度上可以影响舆论导向,也是基于此背景,我们要更加努力的探索通讯。
在互联网大背景下,目前人们使用最为广泛的是1982年IETF(The Internet Engineering Task Force)提出的TCP/IP协议,近些年也在不断地对它进行扩充和改进,虽然研究即时通信的本质没有变化,主要还是通过电磁波来传输信息,但是研究它的形式却随时代不断进步,提出TCP/IP时,通讯质量较差,现在高质量通讯链路还是否值得使用TCP,即时通信在社交媒体方面的扩展形式如何变化,仍是热门话题。本文也是基于此背景,使用Socket技术开发一款聊天系统,进一步探索即时通信技术。
1.1.2 研究的目的及意义
前面已经提到,在互联网的大背景下,人们有很多交流方式,虽然大多数即时通信软件的本质并没有太大差异,比如QQ、MSN和微信,包括用于网页端通信的WebSocket[10],都是使用TCP/IP协议,在运输层之上下功夫。但是运输层之上开发形式众多,使用技术更是层出不穷,如果一款不是以社交为核心的软件,那么在这些开发技术中选择一款最适合自己系统的开发技术,仍是一个值得研究的问题,这也是本次研究的目的之一。
为了方便人们的交流,本次研究的另一个目的是使用Socket开发出一款用户之间能够发送消息、能够使用群消息通知的即时通信软件。再者,背景中提到了TCP/IP提出时年代久远,虽然后来对其做了补充和改进,但是在高质量通讯链路下(本次研发对象为手机用户,虽然移动网络的稳定性不能与宽带、光纤相比,但是相较2000年,已经优化很多了),是否可以尝试用UDP广泛传输不重要的信息,也是本次研究的另一目的。
最后,目前市场上已经诞生了很多优秀的即时通信软件,为了避免重复研究,本次研究要在基础研发之上,对即时通信技术常用的优化手段做出一些尝试。
请支付后下载全文,论文总字数:36382字
相关图片展示: