版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、即时通信系统的开发与设计设 计()本科毕业设计(论文)即时通信软件的开发与设计rrJ摘要攀枝花学院本科毕业设计(论文)摘要随着计算机互联网技术的不断发展,国家对互联网的不断重视,各种各样的社 交软件层出不穷,使用通信软件交流成为了人们生活中必不可少的一部分。即时通 讯工具作为未来跨越互联网与移动互联网的业务,其发展的潜力是十分巨大的,同 时,其商业模式的发展将是未来要关注的焦点。免费与收费相结合的发展策略将是 IM的主要发展模式。本论文实现一个运行于windows平台的基于局域网的即时聊天系统。该聊天软 件包括服务器端和客户端两个模块,客户端向服务器端发送服务请求服务器端向客 户端提供相应的服
2、务。客户端主要实现用户登录、注册、聊天等功能。该软件采用 多线程技术、tcp通信技术、udp通信技术,并在传输数据时对消息实现序列化和数 据的还原。该软件能实现企业员工内部聊天交流,避免企业内部员工使用类似QQ等软件泄 露内部信息,但是该软件只实现了登录、注册、聊天等基本功能,还有很多不足之 处需要改进。关键字 客户端,服务器,c/s,即时通信,套接字.ABSTRACT攀枝花学院本科毕业设计(论文)ABSTRACTWith the continuous development of computer technology, the Internet, the state continues t
3、o pay attention to 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 deve
4、lopment of its business model will be the focus of the future to pay attention. Free and fee development strategy will be a combination of IMfs main development modeLIn this paper, the realization of a run on LANbased instant messaging system windows platform. The chat software includes server and c
5、lient of two modules, 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
6、 technology, and 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, an
7、d other basic functions, there are many deficiencies need to be Improved.Keywords client, server, c / s, instant messaging, socketsii目录攀枝花学院本科毕业设计(论文)目录摘要IABSTRACTII1前言11课题背景及意义12国内现状及发展趋势1.3现行系统的不足2系统开发关键技术及开发环境2. 1 qt及qtcreator开发环境211 qt简介1. 4解决方案2 1 2 Qt Creator 简介52. 2 mysql薮据库介岔52. 3 socket 套接学
8、介绍62.4 IP62. 5 TCP725 udp协议简介727多线程技术介绍93.系统设计112.6 c/s模式介绍83.1系统分析3. 1. 1功能需求分析31.2性能需求分析31.3数据需求分析3. 2系统设计321工作流程32. 2服务器设计32. 3客户端设计4系统关键技术实现164. 1服务器实现1642客户端实现195系统测试33攀枝花学院本科毕业设计(论文)目录总结5.1测试的意义及目的5- 2软件测试的方法/: IS3333333436参考文献38致谢39前言攀枝花学院本科毕业设计(论文)1前言1.1课题背景及意义即时通信(instant messaging)是指网络上用来进
9、行实时通讯的系统服务,人 们可以使用即时通信软件以文字、图片、文档、语音、视频的形式通过网络进行异 地实时信息交流。随着互联网的不断普及,使用通信软件交流成为了人们生活中必 不可少的一部分,而且人们对通信软件的功能需求的不断增大,即时通信软件的功 能也日趋完善,除了最基本的通讯功能外,逐渐集成了电子邮件、博客、微博、音 乐、电视、游戏、电子支付和搜索等多种功能,而这些功能的集成也使得即时通信 软件已经不再是一个单纯的通信工具,它已经成为了集信息交流、娱乐、电子商务、 商务办公、客户服务于一身的综合化信息平台。即时通信将世界构建成了一个整体,实现了信息交流的无国界;无论你身在美国、 还是遥远的非
10、洲、亦或是我们身处的中国,通过MSN或qq聊天就可以知道你现在正 在干什么,将要干什么;即时通信应用在企业办公上,企业工作效率得到了很大的 提升,群组聊天让员工之间的技术探讨畅通无阻;视频会议技术让你不再为繁琐的 会议东奔西走;这极大方便了我们的生活,提高了我们的生活品质。因此,即时通 信软件的设计与开发具有重要意义。1.2内现状及发展趋势国内外即时通信系统发展迅速,特别是近年来即时通信软件层出不穷,目前人们 熟知的有腾讯QQ、MSN、UC、skype等即时通信软件;还有最近几年新起的微信、 易信、米聊等移动端即时通信软件。据一项数据调査显示:2014年二季度末,QQ月 活跃账户数达到& 29
11、亿,微信和WeChat (微信海外版)合并月活跃账户数达4. 38 亿。在微信月活账户持续增长的同时,QQ智能终端月活跃账户突破了 5.21亿,同比 增长45%,相比上季度也有6%的增幅。据相关统计,目前中国智能手机用户在5亿 左右,这意味着,智能手机用户几乎都活跃在手机QQ上。这些数据表明移动端的即 时通信软件现今有很大的市场,逐渐的由互联网络跨入移动互联网,发展潜力十分 巨大。而今,随着人们对生活娱乐的需求不断增加,即时通信软件不单单只有信息交流 这一简单的功能,它还集成了与人生活紧密相关的一些功能;比如:腾讯手机qq上 的滴滴打车、qq电影票、腾讯新闻、qq钱包等。这些功能让你体会到生活
12、的便捷与 快乐;让你足不出户就可以实现电影票的购买,而且还能帮你理财。前言攀枝花学院本科毕业设计(论文)即时通讯工具作为未来跨越互联网与移动互联网的业务,其发展的潜力是十分巨 大的,同时,其商业模式的发展将是未来要关注的焦点。免费与收费相结合的发展 策略将是IM的主要发展模式。集成多种与人们生活息息相关的服务功能是IM的主 要发展趋势仁3现行系统的不足随着电子商务的发展,支付工具遍地开花,即时通讯的经济价值将进一步增强, 也不可避免地遭遇更大的安全性问题。用户信息泄露,盗号木马、网络诈骗钓鱼等 安全性问题屡见不鲜。只要连接到Internet互联网,用户账号和密码被盗对黑客来说是件很容易的事。
13、即时通信软件一般要输入个人账号和密码,验证成功后方可为其提供服务。而目前 的即时通信厂商很少考虑它的认证机制。这给黑客可乘之机,攻击者通过暴力破解、 木马欺骗等破解方法窃取密码后冒充该用户来査看聊天记录并与其他用户进行通 信,以此来窃取重要的信息。目前,大多数即时通信软件在通讯吋传递的信息或文件仅仅采用了弱加密甚至 不加密的方式,黑客能很容易的利用此缺陷来监听、篡改、窃取用户的重要数据,这 种泄密可能给用户造成不可估量的损失;尤其是对一些商业机构和金融机构,一旦 泄密,将会构成巨大的商业安全威胁。1.4解决方案为了解决以上所提到的问题,本软件使用基于C/S模式的架构模型,釆用基于 Socket
14、的局域网通信工具的设计与实现方法。并且还采用tcp与udp通信协议来实 现通信;基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安 全,快速的通信机制它的实现无需对企业原有的局域网硬件进行任何改动,具有实 现成本低廉的优点。而tcp协议是一种可靠的面向连接的传输协议,通过序列确认 和包重复机制提供可靠的数据流发送和应用程序的虚拟连接服务。经过3次握手建 立连接发送数据。但tcp不是及时的传输协议。而udp协议的传输效率髙,在企业 局域网稳定安全的环境下实现用户聊天时用udp协议就可以很好的弥补tcp协议的 不足。而在数据方面,服务器将用户个人信息、用户好友列表信息、客户端连
15、接信息 存放于数据库中。攀枝花学院本科毕业设计(论文)前言整个软件有客户端和服务器端组成,将所有功能封装于各式类文件中,后期维 护简单。攀枝花学院本科毕业设计(论文)系统开发关键技术及开发环境2系统开发关键技术及开发环境2. 及qtcreator开发环境2.1.1qt 简介Qt是一个跨平台应用程序和UI开发框架。使用qt只需一次性开发应用程序, 无需重新编写源代码,便可跨不同的桌面和嵌入式操作系统部署这些应用程序。Qt Software的前生为创始于1994年的Trolltech (奇趣科技),Trolltech于2008年 6月被Nokia收购,加速了其跨平台的开发战略。总的来说,相对于老旧
16、的MFC和目前编程行业通行的VC+工具,Qt以其入门简 单,跨平台以及嵌入式等方面有着无可代替的优越性,当然MFC的完整性以及内容 的丰富性是Qt不及的。但是由于Qt为开源框架,得到了众多开发者的支持,因此 qt的普及也在近千万开发人员的基础上,再次的得到发展。自从诺基亚宣布停止开 发其和英特尔公司共同推出的Meego系统并大幅度裁员以来,Qt用以移动开发人员 集聚减少,从而使得曾经火热的Qt减缓了在移动设备上的发展的步伐,但是正因为 如此,Qt就更加专注于跨平台。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是 QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一
17、种通信机制,它独立 于标准的C/C+语言。当一个特定事件发生的时候,一个信号被发射。Qt的窗口部 件有很多预定义的信号,但是我们总是可以通过继承来加入我们自己的信号。槽就 是一个可以被调用处理特定信号的函数。Qt的窗口部件又很多预定义的槽,但是通 常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹 配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签 名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。信号和槽是宽 松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个
18、信号。 Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的 时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它 们是完全类型安全的,不会再有回调核心转储(core dump) Qt Linguist、图形化的 GDB 调试前端,集成qmake构建工具等。2. 2 mysq I数据库介绍MySQL的概述MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008 年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网 站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多 中
19、小型网站为了降低网站总体拥有成本而选择了 MySQL作为网站数据库。MySQL是使用使用C和C卄编写,并使用了多种编译器进行测试,保证源代 码的可移植性特点;它还支持 AIX、FreeBSDs HP-UX、Linux、Mac OS、Novell Netware、 OpenBSD、OS/2 Wrap Solaris、Windows等多种操作系统;它为多种编程语言提供 了 APIo 这些编程语言包括 C、C+、Eiffel、Java、Perl PHP、Python、Ruby 和 Tel等;MySQL还支持多线程,充分利用CPU资源 并且优化了 SQL査询算法,有效地提高査询速度。它既能够作为一个单
20、独的应用程 序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供 多语言支持,常见的编码如中文的GB2312、BIG5,日文的Sh辻tIS等都可以用作 数据表名和数据列名提供TCP/IP、ODBC和JDBC等多种数据库连接途径,提供用 于管理、检査、优化数据库操作的管理工具,可以处理拥有上千万条记录的大型数 据库。与其他的大型数据库例如Oracle DB2 SQL Server等相比,MySQL自有它的不 足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但 是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说, MySQ
21、L提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大 降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP (Linux+Apache+MySQL+PHP),即使用 Linux 作为操作系 统,Apache 作为 Web 服务 器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL 的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的 网站系统。攀枝花学院本科毕业设计(论文)系统开发关键技术及开发环境2. 3 socket套接字介绍socket套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同
22、主 机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接 字中的相关函数来完成通信过程。Socket套接字包括:流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无 差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原 因在于其使用了传输控制协议,即TCP (The Transmission Control Protocol)协 议。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性, 数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地
23、接收到数据。数 据报套接字使用UDP (User Datagram Protocol)协议进行数据的传输。由于数据报 套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序 中做相应的处理。原始套接字(SOCK.RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套 接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只 能读取TCP协议的数据,数据报套接字只能读取UDF协议的数据。因此,如果要访 问其他协议发送数据必须使用原始套接字。2.4 IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接
24、口层例如以太网设备驱动程序)发来的数据包,并把该 数据包发送到更高层一TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数 据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据 包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址) 和接收它的主机的地址(目的地址)。高层的TCF和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可 以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效 的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定攀枝花学院本科毕业设计(论文)系统开
25、发关键技术及开发环境一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了 该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真 实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常 是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非 法入侵。2. 5 TCP如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到 TCP层。TCF将包排序并进行错误检査,同时实现虚电路间的连接。TCP数据包中包 括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP 将它的信息送到更高层的应用
26、程序,例如Telnet的服务程序和客户程序。应用程序 轮流将信息送回TCP层,TCP层便将它们向下传送到IF层,设备驱动程序和物理介 质,最后到接收方。面向连接的服务(例如Telnet、FTP rlogin. X Windows和SMTP) 需要高度的可靠性,所以它们使用了 TCP。DNS在某些情况下使用TCP (发送和接收 域名数据库),但使用UDP传送有关单个主机的信息。2. 5 udp协议简介UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来 支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众 多的客户/服务器模式的网络应用都
27、需要使用UDP协议。UDP协议从问世至今已经被 使用了很多年,虽然其最初的光彩己经被一些类似协议所掩盖,但是即使是在今天, UDP仍然不失为一项非常实用和可行的网络传输层协议。与我们所熟知的TCP (传输 控制协议)协议一样,UDP协议直接位于IP (网际协议)协议的顶层。根据0SI (开 放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP是0SI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到 达的传输中,分组传输顺序的检査与排序由应用层完成,提供面向事务的简单不可 靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP协议适用端口 分别运行在同一台设备上的
28、多个应用程序。UDP提供了无连接通信,且不对传送数据 包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。UDP 报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP 协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性 要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。攀枝花学院本科毕业设计(论文)系统开发关键技术及开发环境2. 6 c/s模式介绍C/S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它 可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端
29、来实 现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的 两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和 Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件; 因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统 中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工 完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功 能;服务器端完成DBMS (数据库管理系统)的核心功能。这种客户
30、请求服务、服务 器提供服务的处理方式是一种新型的计算机应用模式。Client和Server常常分别 处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程 序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是 接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处 理后再提交给服务器。对应的优点就是客户端响应速度快。具体表现在以下两点:(1)应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分 组成,即客户应用程序和数据库服务器程序
31、。二者可分别称为前台程序与后台程序。 运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随 时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于 数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户 程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出 应答,送回结果,应用服务器运行数据负荷较轻。(2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由 服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知 还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者
32、 的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工 作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背 后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不 是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能 真正成为公共、专业化的仓库,它受到独立的专门管理。攀枝花学院本科毕业设计(论文)系统开发关键技术及开发环境随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统 具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来 处理分布式的数据。客户端需要安装专用的客户端软件
33、。首先涉及到安装的工作量,其次任何一台电 脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖 店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台 客户机需要重新安装,其维护和升级成本非常高。对客户端的操作系统一般也会有 限制。可能适应于Win9&但不能用于win2000或Windows XP。或者不适用于微软 新的操作系统等等,更不用说Linux、Unix等。传统的c/s体系结构虽然采用的是 开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是 Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S
34、 结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代十 分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。C/S架构的劣势还有高昂的维护成本且投资大。首先,采用C/S架构,要选择适 当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全 交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效 实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立 实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服 务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持, 维护成本
35、很高,维护任务量大。其次,传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软 件,由于产品的更新换代十分快,代价高和低效率己经不适应工作需要。在JAVA这 样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。2. 7多线程技术介绍多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的 计算机因有硬件支持而能够在同一时间执行多于一个执行绪,进而提升整体处理性 能。具有这种能力的系统包括对称多处理器、多核心处理器以及芯片级多处理器 (Chip-level multithreading)或同时多线程(Simultaneous multithrea
36、ding) 处理器。软件多线程。即便处理器只能运行一个线程,操作系统也可以通过快速的 在不同线程之间进行切换,由于时间间隔很小,来给用户造成一种多个线程同时运 行的假象。这样的程序运行机制被称为软件多线程。如微软的Windows作业系统和 Linux就是在各个不同的执行绪间来回切换,被称为单人多任务作业系统。而DOS这攀枝花学院本科毕业设计(论文)系统开发关键技术及开发环境类文字接口作业系统在一个时间只能处理一项工作,被视为单人单工作业系统。除 此之外,许多系统及处理器也支持硬件多线程技术。对称多处理机(SMP)系统具有 多个处理器,所以具有真正的同时执行多个线程的能力;CMP技术通过在一块芯
37、片上 集成多个核心也具有真正的多线程能力;CMT技术则稍有不同,有的是依靠硬件执行 线程切换来获得多线程能力,操作系统不再负责线程切换,因而这部分开销可以减 少甚至消除,这方面典型的例子是Sun的UltraSPARCTl,它同时综合了 CMP和CMT。 微软的Windows 2000以后的操作系统皆支持多线程与超线程技术。系统设计攀枝花学院本科毕业设计(论文)3. 系统设计3.1系统分析3.1.1功能需求分析即时通信系统是基于c/s模型的网络通信软件,分为客户端和服务器端两个部 分。客户端依靠服务器获取所需的网络资源,服务器为客户端提供必需的网络资源。服务器端包含数据库模块和消息处理两个模块;
38、数据库模块用于存储用户个人 信息、用户好友列表、和用户连接信息;消息处理模块包含査看好友资料、注册处 理、登录处理、聊天处理、修改个人信息、添加好友、删除好友。具体功能结构图如图3.1图3. 1服务器功能模块图客户端包含登录和注册两个部分;登录模块包括用户信息修改、好友管理、消 息功能三个模块。用户信息修改模块:实现修改个人信息。好友管理模块:实现好友的分组显示、添加好友、删除好友、査看好友资料。消息功能模块:实现发送消息、接收消息、聊天记录。客户端功能模块结构如图3.2系统设计攀枝花学院本科毕业设计(论文)用户佬想嬉改妇立管理涓息功幣图32客户端功能模块图3.1.2性能需求分析即时性用户之间
39、通信时彼此的聊天信息能即时的传送给对方。服务器的消息记录能即 时的更新。系统友好性登录界面、聊天窗口、好友信息资料界面、好友在线状态界面要美观简洁,友 好大方,操作简单合理恰当。安全性用户需要服务器提供相关服务时需通过服务器的身份验证来获取相关服务。以 此来提高系统的安全性。可扩展性可以很容易扩展系统功能和系统功能的更新。系统设计攀枝花学院本科毕业设计(论文)3.1.3数据需求分析本系统服务器端需要用到MySQL数据库;以此来存放用户的个人信息、用户好 友列表、客户端与服务器通信的登录信息及网络连接信息。相关数据库表如下;用户信息表user info:名称字段类型长度说明账户useridvar
40、char24Primary key , not null密码UserpwdVarchar24Not null昵称userNickvarchar24Not null姓名userNamevarchar24Not null性别userSexvarchar24Not null年龄userAgeint12Not null个人签名iDiographvarchar48所在地cityvarchar24联系方式phonenumbervarchar24在线状态statusint12Other10ther2Other3网络连接表connect info:名称字段类型长度说明账户(id)useridvarchar24
41、Primary key, not nullIp地址ipAddressvarchar24Not null端口Portint12Not null用户登录表friendtable:名称字段类型长度说明x攀枝花学院本科毕业设计(论文)系统设计当前账户useridvarchar24Primary key, Not null账号friendidvarchar24not null备注remarkvarchar24好友类型friendkindint12好友总数friendtotalint12昵称nicknamevarchar24好友状态statusint123. 2系统设计3. 2.1工作流程本系统由服务器先
42、启动。然后客户端通过己经注册的账号和密码来登录服务器, 登录成功后客户端从服务器获取用户信息和好友列表,客户端向服务器发送相应的 请求可以实现对用户的信息修改、好友的添加、删除、査看好友的资料、聊天等一 系列操作。聊天时客户端向服务器请求好友的连接信息,客户端得到好友的连接信 息后再利用此链接信息将聊天信息发送给好友.3. 2. 2服务器设计登录验证:服务器接收客户端发来的账户和密码,创建一个通信线程来接收客 户端的请求。在线程中实行数据库中的用户信息账户和密码的比对,判断登录认证 通过与否及用户是否在线;认证通过后将用户的好友列表及用户的个人信息返回给 客户端之后才能实现正常在线、好友聊天、
43、添加好友、删除好友、修改个人信息等 操作。客户端连接信息存储:客户端登陆成功后将客户端的账号、ip地址以及端口号 存入数据库中的客户端的连接信息表中,并将数据库用户信息表的中的用户状态置 为1;当客户端退出登录时将客户端的账号、ip地址及端口号从数据库中的连接信 息表中删除,并将数据库中用户信息表中的用户状态置为0。用户注册:客户端发来注册请求时,服务器将用户的注册信息存入数据库的用 户信息表中,并通知用户注册成功与否。添加好友:服务器收到添加好友请求后将好友存入数据库中的好友列表。 删除好友:服务器收到删除好友请求后将好友从数据库中的好友列表删除。査看好友信息:服务器收到査看好友信息请求时,
44、从数据库中的用户信息表中 査询好友信息,再将査询的信息发送到对应的用户。修改用户信息:服务器收到用户信息修改请求时将相应的数据库中的用户信息系统设计攀枝花学院本科毕业设计(论文)表更新。好友聊天:服务器收到聊天请求时在数据中査询好友的连接信息并将好友的ip 地址及端口号返回给用户。3. 2. 3客户端设计用户登录:从客户端输入登录信息判断账号密码不为空时才向服务器发送登录 请求。用户注册:客户端在注册界面填写用户注册信息后在把填写的信息发送给服务 器。注册成功后在登录界面输入账号和密码就可以登录。用户信息修改:客户端点击修改个人信息按钮,出现填写个人信息资料的窗体, 将要修改的个人信息填写到窗
45、体的列表中,再将修改的个人信息发送到数据库中。好友分组:客户端登录服务器验证通过后,客户端收到来自服务器的好友列表 信息,客户端对好友进行分组显示及好友状态显示。双击分组可以展开或收拢分组。添加好友:用户在主界面点击添加好友按钮出现添加好友的界面。在该界面中 填写好友的账号即可实现好友的添加。删除好友:用户在好友列表的好友信息一栏上点击右键即可实现好友的的删除。査看好友资料:用户在好友列表的好友信息一栏上点击右键,选择查看资料就 可以发送査看好友资料的请求。并将服务器发来的好友资料信息以列表的形式加入 窗体显示。聊天:用户在好友列表的好友信息一栏上点击右键,如果好友在线选择聊天客 户端就会发送
46、请求获取好友的ip地址和端口号。服务器收到请求后就发送连接信息 给相应的客户端,客户端利用此连接信息与好友实现通信聊天。聊天时有聊天窗体, 聊天窗体包括与好友聊天的聊天记录显示,用户发送聊天信息的发送编辑区域及与 哪个好友聊天的标题。系统关键技术实现攀枝花学院本科毕业设计(论文)4系统关键技术实现4.1服务器实现服务器主要有myServer类、myThread类和MainWindow类;其中Ma inWindow类 主要实现服务器窗口显示、开启、关闭。myServer类主要实现通信线程的创建、删 除。myThread类主要实现通信的处理,即从客户端接收请求消息、数据库处理、向 客户端发送消息。
47、服务器连接数据库关键代码:int main(int argc, char *argv)QApplication a(zirgc, argv);db=QSqlDatabase:addDatabaseCQMYSQL);db. setHostNameClocalhost);db. setUserName(root);db. setPassword(root);db. setDdt abas eName (db_use:r);bool ok=db. open ();qDebug ()db. driver ();qDebug () db userName ();if (ok)qDebug0open da
48、tabase success;elseqDebug()error open database becausedb. lastError().text();MainWindow w;w. show();return eu exec ();系统关键技术实现攀枝花学院本科毕业设计(论文)当服务器启动时创建服务器启动界面,点击启动服务器进入监听状态,界面显 示服务器的ip地址和端口号。其关键代码如下:void MainWindow: :openServer ()if(!server-listen(QHostAddress:LocalHost,9901)QMessageBox: critical (th
49、is, tr (多线程服务器),tr(无法启动:1.) arg(server-errorString();close ();return;elseui-serverStatuslabel-setText(tr(* 服务器运行在端 口: %L n) arg(server-serverPort ();ui-displayEdit-setText(server-serverAddress (). toString ();如图4. 1所示:图4. 1服务器端当服务器接收连接请求时通过套接字描述符创建一个单独的通信线程,当客户 端失去连接时删除该通信线程。其关键代码如下:void myServer ::
50、 incomingConnection(int socketDescriptor)系统关键技术实现攀枝花学院本科毕业设计(论文)mythread=new myThread (socketDescriptor, 0);connect (mythread, SIGNAL (c 1 ientDisconnectSignal (QString), mythread, SLOT (d eleteLater();connect(mythread, SIGNAL(sendchatFinishSignal(), this SLOT(updateChatMsgS lot ();connect (mythread, SIGNAL (receiveChat (M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开业庆典致辞(汇编15篇)
- 公司整体操作流程
- 手术室基础知识操作管理
- 面向雷达的智能化干扰策略优化技术研究
- 基于参考纹波消除技术的10 bit SAR ADC系统设计
- 舒适护理在膝关节置换术后功能锻炼的应用研究
- 积雪益肾排毒方加味联合非布司他治疗慢性肾脏病合并无症状高尿酸血症临床研究
- 二零二五年度KTV娱乐场所卫生标准管理与监督合同3篇
- 二零二五版教育信息化设备招标投标合同3篇
- 二零二五年度建筑工程二级建造师安全责任聘用合同3篇
- 2025年人教五四新版八年级物理上册阶段测试试卷含答案
- 不同茶叶的冲泡方法
- 2025年春季1530安全教育记录主题
- 矿山2025年安全工作计划
- 光伏发电并网申办具体流程
- 2025年包装印刷项目可行性研究报告
- 建筑劳务专业分包合同范本(2025年)
- 企业融资报告特斯拉成功案例分享
- 五年(2020-2024)高考地理真题分类汇编(全国版)专题12区域发展解析版
- 《阻燃材料与技术》课件 第8讲 阻燃木质材料
- 低空经济的社会接受度与伦理问题分析
评论
0/150
提交评论