1、本科毕业设计(论文)即时通信软件的开发与设计攀枝花学院本科毕业设计(论文) 摘要I摘 要随着计算机互联网技术的不断发展,国家对互联网的不断重视,各种各样的社交软件层出不穷,使用通信软件交流成为了人们生活中必不可少的一部分。即时通讯工具作为未来跨越互联网与移动互联网的业务,其发展的潜力是十分巨大的,同时,其商业模式的发展将是未来要关注的焦点。免费与收费相结合的发展策略将是IM 的主要发展模式。本论文实现一个运行于 windows 平台的基于局域网的即时聊天系统。该聊天软件包括服务器端和客户端两个模块,客户端向服务器端发送服务请求服务器端向客户端提供相应的服务。客户端主要实现用户登录、注册、聊天等
2、功能。该软件采用多线程技术、tcp 通信技术、udp 通信技术,并在传输数据时对消息实现序列化和数据的还原。该软件能实现企业员工内部聊天交流,避免企业内部员工使用类似 QQ 等软件泄露内部信息,但是该软件只实现了登录、注册、聊天等基本功能,还有很多不足之处需要改进。关键字 客户端,服务器,c/s,即时通信,套接字.攀枝花学院本科毕业设计(论文) ABSTRACTIIABSTRACTWith the continuous development of computer technology, the Internet, the state continues to pay attention t
3、o the Internet, a variety of social software after another, using communication software exchange has become an indispensable part of peoples lives. Instant messaging as the future across the Internet and mobile Internet business, its development potential is enormous, while the development of its b
4、usiness model will be the focus of the future to pay attention. Free and fee development strategy will be a combination of IMs main development model.In this paper, the realization of a run on LAN-based instant messaging system windows platform. The chat software includes server and client of two mo
5、dules, the client sends a service request to the server to the client to provide appropriate services to the server. Client main implement user login, registration, chat and other functions. The software uses multi-threading technology, tcp communication technology, udp communications technology, an
6、d in the transmission of data to achieve reduction message serialization and data.The software enables employees chat internal communication and to avoid internal staff use similar software QQ leaked inside information, but the software only to realize the login, registration, chat, and other basic
7、functions, there are many deficiencies need to be improved.Keywords client, server, c / s, instant messaging, sockets攀枝花学院本科毕业设计(论文) 目录目 录摘要 .IABSTRACT .II1 前言 .11.1 课题背景及意义 .11.2 国内现状及发展趋势 .11.3 现行系统的不足 .21.4 解决方案 .22 系统开发关键技术及开发环境 .42.1 qt 及 qtcreator 开发环境 .42.1.1 qt 简介 .42.1.2 Qt Creator 简介 .52.2
8、 mysql 数据库介绍 .52.3 socket 套接字介绍 .62.4 IP .62.5 TCP.72.5 udp 协议简介 .72.6 c/s 模式介绍 .82.7 多线程技术介绍 .93.系统设计 .113.1 系统分析 .113.1.1 功能需求分析 .113.1.2 性能需求分析 .123.1.3 数据需求分析 .133.2 系统设计 .143.2.1 工作流程 .143.2.2 服务器设计 .143.2.3 客户端设计 .154 系统关键技术实现 .164.1 服务器实现 .164.2 客户端实现 .195 系统测试 .33攀枝花学院本科毕业设计(论文) 目录5.1 测试的意义及
9、目的 .335.2 软件测试的方法 .335.3 测试用例 .335.4 测试结论 .34总结 .36参考文献 .38致谢 .39攀枝花学院本科毕业设计(论文) 前言11 前 言1.1 课题背景及意义即时通信(instant messaging)是指网络上用来进行实时通讯的系统服务,人们可以使用即时通信软件以文字、图片、文档、语音、视频的形式通过网络进行异地实时信息交流。随着互联网的不断普及,使用通信软件交流成为了人们生活中必不可少的一部分,而且人们对通信软件的功能需求的不断增大,即时通信软件的功能也日趋完善,除了最基本的通讯功能外,逐渐集成了电子邮件、博客、微博、音乐、电视、游戏、电子支付和
10、搜索等多种功能,而这些功能的集成也使得即时通信软件已经不再是一个单纯的通信工具,它已经成为了集信息交流、娱乐、电子商务、商务办公、客户服务于一身的综合化信息平台。即时通信将世界构建成了一个整体,实现了信息交流的无国界;无论你身在美国、还是遥远的非洲、亦或是我们身处的中国,通过 MSN 或 qq 聊天就可以知道你现在正在干什么,将要干什么;即时通信应用在企业办公上,企业工作效率得到了很大的提升,群组聊天让员工之间的技术探讨畅通无阻;视频会议技术让你不再为繁琐的会议东奔西走;这极大方便了我们的生活,提高了我们的生活品质。因此,即时通信软件的设计与开发具有重要意义。1.2 国内现状及发展趋势国内外即
11、时通信系统发展迅速,特别是近年来即时通信软件层出不穷,目前人们熟知的有腾讯 QQ、 MSN、UC、skype 等即时通信软件;还有最近几年新起的微信、易信、米聊等移动端即时通信软件。据一项数据调查显示:2014 年二季度末,QQ 月活跃账户数达到 8.29 亿,微信和 WeChat(微信海外版)合并月活跃账户数达 4.38亿。在微信月活账户持续增长的同时,QQ 智能终端月活跃账户突破了 5.21 亿,同比增长 45%,相比上季度也有 6%的增幅。据相关统计,目前中国智能手机用户在 5亿左右,这意味着,智能手机用户几乎都活跃在手机 QQ 上。这些数据表明移动端的即时通信软件现今有很大的市场,逐渐
12、的由互联网络跨入移动互联网,发展潜力十分巨大。而今,随着人们对生活娱乐的需求不断增加,即时通信软件不单单只有信息交流这一简单的功能,它还集成了与人生活紧密相关的一些功能;比如:腾讯手机 qq上的滴滴打车、qq 电影票、腾讯新闻、qq 钱包等。这些功能让你体会到生活的便捷与快乐;让你足不出户就可以实现电影票的购买,而且还能帮你理财。即时通讯工具作为未来跨越互联网与移动互联网的业务,其发展的潜力是十分攀枝花学院本科毕业设计(论文) 前言2巨大的,同时,其商业模式的发展将是未来要关注的焦点。免费与收费相结合的发展策略将是 IM 的主要发展模式。集成多种与人们生活息息相关的服务功能是 IM 的主要发展
13、趋势1.3 现行系统的不足随着电子商务的发展,支付工具遍地开花,即时通讯的经济价值将进一步增强,也不可避免地遭遇更大的安全性问题。用户信息泄露,盗号木马、网络诈骗钓鱼等安全性问题屡见不鲜。只要连接到 Internet 互联网,用户账号和密码被盗对黑客来说是件很容易的事。即时通信软件一般要输入个人账号和密码,验证成功后方可为其提供服务。而目前的即时通信厂商很少考虑它的认证机制。这给黑客可乘之机,攻击者通过暴力破解、木马欺骗等破解方法窃取密码后冒充该用户来查看聊天记录并与其他用户进行通信,以此来窃取重要的信息。目前,大多数即时通信软件在通讯时传递的信息或文件仅仅采用了弱加密甚至不加密的方式,黑客能
14、很容易的利用此缺陷来监听、篡改、窃取用户的重要数据,这种泄密可能给用户造成不可估量的损失;尤其是对一些商业机构和金融机构,一旦泄密,将会构成巨大的商业安全威胁。1.4 解决方案为了解决以上所提到的问题,本软件使用基于 C/S 模式的架构模型,采用基于Socket 的局域网通信工具的设计与实现方法。并且还采用 tcp 与 udp 通信协议来实现通信;基于 Socket 的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点。而 tcp 协议是一种可靠的面向连接的传输协议,通过序列确认和包重复机制提供可靠的数据
15、流发送和应用程序的虚拟连接服务。经过 3 次握手建立连接发送数据。但 tcp 不是及时的传输协议。而 udp 协议的传输效率高,在企业局域网稳定安全的环境下实现用户聊天时用 udp 协议就可以很好的弥补 tcp 协议的不足。 而在数据方面,服务器将用户个人信息、用户好友列表信息、客户端连接信息存放于数据库中。整个软件有客户端和服务器端组成,将所有功能封装于各式类文件中,后期维护简单。攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境32 系统开发关键技术及开发环境2.1qt 及 qtcreator 开发环境2.1.1qt 简介Qt 是一个跨平台应用程序和 UI 开发框架。使用 qt 只
16、需一次性开发应用程序,无需重新编写源代码,便可跨不同的桌面和嵌入式操作系统部署这些应用程序。 Qt Software 的前生为创始于 1994 年的 Trolltech(奇趣科技),Trolltech 于 2008 年6 月 被 Nokia 收购,加速了其跨平台的开发战略。总的来说,相对于老旧的 MFC 和目前编程行业通行的 VC+工具,Qt 以其入门简单,跨平台以及嵌入式等方面有着无可代替的优越性,当然 MFC 的完整性以及内容的丰富性是 Qt 不及的。但是由于 Qt 为开源框架,得到了众多开发者的支持,因此qt 的普及也在近千万开发人员的基础上,再次的得到发展。自从诺基亚宣布停止开发其和英
17、特尔公司共同推出的 Meego 系统并大幅度裁员以来,Qt 用以移动开发人员集聚减少,从而使得曾经火热的 Qt 减缓了在移动设备上的发展的步伐,但是正因为如此,Qt 就更加专注于跨平台。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是QT 区别于其它工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C+语言。当 一个特定事件发生的时候,一个信号被发射。Qt 的窗口部件有很多预定义的信号, 但是我们总是可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt 的窗口部件又很多预定义的槽,但是通常的习惯是你可以加入自己的
18、槽,这样你就可以处理你所感兴趣的信号。信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹 配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的 签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。信号和槽是 宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。Qt 的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的,不会再有回调核心转储(core dump)。 2.1.2 Qt Creator 简介Qt Creat
19、or 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE),能够跨平台运行,支持的系统包括 Linux,Mac OS X 以及 Windows.允许开发者为多桌面环境及移动设备平台创建应用程序。它包括一个可视化调试工具和集成的 GUI 版面和外形设计师。根据官方描述,Qt Creator 的设计目标攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境4是使开发人员能够利用 qt 这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,Qt Creator 包括项目生成向导、高级的 C+代码编辑器、浏览文件及类的工具、集成了 Qt Designer 、Qt Assi
20、tant、Qt Linguist、图形化的 GDB调试前端,集成 qmake 构建工具等。2.2 mysql 数据库介绍MySQL 的概述MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。在2008 年 1 月 16 号被 Sun 公司收购。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成 本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。MySQL 是使用使用 C 和 C+编写,并使用了多种编译器进行测试,保证源代码的可移植性特点;它还支持 AIX、F
21、reeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统 ;它为多种编程语言提供了 API。这些编程语言包括C、C+、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 等;MySQL 还支持多线程,充分利用 CPU 资源 并且优化了 SQL 查询算法,有效地提高查询速度 。它既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS 等都
22、可以用作数据表名和数据列名 提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径 ,提供用于管理、检查、优化数据库操作的管理工具 ,可以处理拥有上千万条记录的大型数据库。与其他的大型数据库例如 Oracle、DB2、SQL Server 等相比,MySQL 自有它的不足之处,如规模小、功能有限(MySQL Cluster 的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL 提供的功能已经绰 绰有余,而且由于 MySQL 是开放源码软件,因此可以大大降低总体拥有成本。 目前 Internet 上流行的网站构架方式是LAM
23、P(Linux+Apache+MySQL+PHP),即使用 Linux 作为操作系 统,Apache 作为 Web服务器,MySQL 作为数据库,PHP 作为服务器端脚本解释器。由于这四个软件都是遵循 GPL 的开放源码软件,因此使用这种方 式不用花一分钱就可以建立起一个稳定、免费的网站系统。 攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境52.3 socket 套接字介绍socket 套接字,是支持 TCP/IP 的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。Socket 套接字包括
24、:流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即 TCP(The Transmission Control Protocol)协议。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用 UDP(User Datagram Protocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的
25、可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。原始套接字(SOCK_RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的 IP 数据包,而流套接字只能读取 TCP 协议的数据,数据报套接字只能读取 UDP 协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。2.4 IP 网际协议 IP 是 TCP/IP 的心脏,也是网络层中最重要的协议。 IP 层接收由更低层(网络接口层例如以太 网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP 或 UDP 层;相反,IP 层也把从 TCP 或 UDP 层接收来的数据包传送到更低层。IP 数据包是不可靠的,因为 IP 并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP 数据包中含有发送它的主机的地址(源地址)和接收它的主机的 地址(目的地址)。 高层的 TCP 和 UDP 服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP 地址形成了许多服务的 认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP 确认包含一个选项,叫作 IP source routing,可以用来