




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、攀枝花学院本科毕业设计(论文)即时通信软件的开发与设计学生姓名: 李小康 学生学号: 201110803014 院(系): 数学与计算机学院 年级专业: 11级网络工程 指导教师: 罗学刚老师 助理指导教师: 二一五年五月 攀枝花学院本科毕业设计(论文) 摘要摘 要 随着计算机互联网技术的不断发展,国家对互联网的不断重视,各种各样的社交软件层出不穷,使用通信软件交流成为了人们生活中必不可少的一部分。即时通讯工具作为未来跨越互联网与移动互联网的业务,其发展的潜力是十分巨大的,同时,其商业模式的发展将是未来要关注的焦点。免费与收费相结合的发展策略将是IM的主要发展模式。本论文实现一个运行于wind
2、ows平台的基于局域网的即时聊天系统。该聊天软件包括服务器端和客户端两个模块,客户端向服务器端发送服务请求服务器端向客户端提供相应的服务。客户端主要实现用户登录、注册、聊天等功能。该软件采用多线程技术、tcp通信技术、udp通信技术,并在传输数据时对消息实现序列化和数据的还原。该软件能实现企业员工内部聊天交流,避免企业内部员工使用类似QQ等软件泄露内部信息,但是该软件只实现了登录、注册、聊天等基本功能,还有很多不足之处需要改进。关键字 客户端,服务器,c/s,即时通信,套接字.I攀枝花学院本科毕业设计(论文) ABSTRACT ABSTRACTWith the continuous devel
3、opment of computer technology, the Internet, the state continues to 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 Inter
4、net business, its development potential is enormous, while the development of its business 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 messag
5、ing system windows platform. The chat software includes server and client 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-th
6、reading technology, tcp communication technology, udp communications 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 informatio
7、n, but the software only to realize the login, registration, chat, and other basic functions, there are many deficiencies need to be improved.Keywords client, server, c / s, instant messaging, socketsII攀枝花学院本科毕业设计(论文) 目录目 录摘要IABSTRACTII1 前言11.1课题背景及意义11.2国内现状及发展趋势11.3现行系统的不足21.4 解决方案22 系统开发关键技术及开发环境
8、42.1 qt及qtcreator开发环境42.1.1 qt简介42.1.2 Qt Creator简介52.2 mysql数据库介绍52.3 socket套接字介绍62.4 IP62.5 TCP72.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系统测试335.1测试的意义及目的335.2软件测试的方法
9、335.3测试用例335.4测试结论34总结36参考文献38致谢39攀枝花学院本科毕业设计(论文) 前言1 前 言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钱包等。这些功能让你体会到生活的便捷与快乐;让你足不出户就可以实现电影票的购买,而且还能帮你理财。即时通讯工具作为未来跨越互联网与移动互联网的业务,其发展的潜力是十分巨大的,同时,其商业模式的发展将是未来要关注的焦点。免费与收费相结合的发展策略将是IM的主要发展模式。集成多种与人们生活息息相关的服务功能是IM的主要发展趋势1.3现行系统的不足随着电子商务的发展,支付工具遍地开花,即时通讯的经济价值将进一步增强,也不可避免地遭遇更大的安全性问题。用户信息泄露,盗号木马、网络诈
13、骗钓鱼等安全性问题屡见不鲜。只要连接到Internet互联网,用户账号和密码被盗对黑客来说是件很容易的事。即时通信软件一般要输入个人账号和密码,验证成功后方可为其提供服务。而目前的即时通信厂商很少考虑它的认证机制。这给黑客可乘之机,攻击者通过暴力破解、木马欺骗等破解方法窃取密码后冒充该用户来查看聊天记录并与其他用户进行通信,以此来窃取重要的信息。目前,大多数即时通信软件在通讯时传递的信息或文件仅仅采用了弱加密甚至不加密的方式,黑客能很容易的利用此缺陷来监听、篡改、窃取用户的重要数据,这种泄密可能给用户造成不可估量的损失;尤其是对一些商业机构和金融机构,一旦泄密,将会构成巨大的商业安全威胁。1.
14、4 解决方案为了解决以上所提到的问题,本软件使用基于C/S模式的架构模型,采用基于Socket的局域网通信工具的设计与实现方法。并且还采用tcp与udp通信协议来实现通信;基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点。而tcp协议是一种可靠的面向连接的传输协议,通过序列确认和包重复机制提供可靠的数据流发送和应用程序的虚拟连接服务。经过3次握手建立连接发送数据。但tcp不是及时的传输协议。而udp协议的传输效率高,在企业局域网稳定安全的环境下实现用户聊天时用udp协议就可以很好的弥补
15、tcp协议的不足。 而在数据方面,服务器将用户个人信息、用户好友列表信息、客户端连接信息存放于数据库中。整个软件有客户端和服务器端组成,将所有功能封装于各式类文件中,后期维护简单。38攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境2 系统开发关键技术及开发环境2.1qt及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区别于其它工具包
17、的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C+语言。当 一个特定事件发生的时候,一个信号被发射。Qt的窗口部件有很多预定义的信号, 但是我们总是可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件又很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹 配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的 签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。信号和槽是 宽松地联系在一起的:一个发射信号的类
18、不用知道也不用注意哪个槽要接收这个信号。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的,不会再有回调核心转储(core dump)。 2.1.2 Qt Creator简介 Qt Creator 是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE),能够跨平台运行,支持的系统包括Linux,Mac OS X 以及Windows.允许开发者为多桌面环境及移动设备平台创建应用程序。它包括一个可视化调试工具和集成的 GUI 版面和外形设计师。根据官方描述,Qt Creat
19、or的设计目标是使开发人员能够利用qt这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,Qt Creator包括项目生成向导、高级的C+代码编辑器、浏览文件及类的工具、集成了Qt Designer 、Qt Assitant、Qt Linguist、图形化的GDB调试前端,集成qmake构建工具等。2.2 mysql数据库介绍MySQL的概述MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成 本低,尤其是开放源码这一特点,许多中小
20、型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL是使用使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性特点;它还支持AIX、FreeBSD、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查询算法,有效地提高查询速度 。它既能够作为一个单独的应用程序应用在客户
21、端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 提供TCP/IP、ODBC和JDBC等多种数据库连接途径 ,提供用于管理、检查、优化数据库操作的管理工具 ,可以处理拥有上千万条记录的大型数据库。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰 绰有
22、余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。 目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系 统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方 式不用花一分钱就可以建立起一个稳定、免费的网站系统。 2.3 socket套接字介绍 socket套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完
23、成通信过程。Socket套接字包括:流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。数据报套接字(SOCK_DGRAM): 数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由
24、于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。原始套接字(SOCK_RAW): 原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。2.4 IP 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太 网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从TCP
25、或UDP层接收来的数据包传送到更低层。IP 数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的 地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的 认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系 统传递过来的,而不是来自于它的真
26、实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址 做确认的服务将产生问题并且会被非法入侵。2.5 TCP 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet
27、、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。2.5 udp协议简介UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视 频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。与我们所熟知的TCP(传输
28、控制协议)协议一样,UDP协议直接位于 IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控
29、制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。2.6 c/s 模式介绍C/S 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问
30、新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS(数据库管理系统)的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。Client 和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特 定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请
31、求,进行相应的处理,再将结果返回给客户程序。C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。具体表现在以下两点:(1)应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服
32、务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。(2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的
33、仓库,它受到独立的专门管理。随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Lin
34、ux、Unix等。传统的c/s体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真 正期望的开放环境,C/S结构的软件需要针对不同的操作系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。C/S架构的劣势还有高昂的维护成本且投资大。首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果
35、需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。其次,传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。2.7 多线程技术介绍多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个执行绪,进而提升整体处
36、理性能。具有这种能力的系统包括对称多处理器、多核心处理器以及芯片级多处理器(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。 软件多线程。即便处理器只能运行一个线程,操作系统也可以通过快速的在不同线程之间进行切换,由于时间间隔很小,来给用户造成一种多个线程同时运行的假象。这样的程序运行机制被称为软件多线程。如微软的Windows作业系统和Linux就是在各个不同的执行绪间来回切换,被称为单人多任务作业系统。而DOS这类文字接口作业系统在一个时间只能处理一项工作,被视为单人单工作业系统。除此之外,许多系统及处理器也
37、支持硬件多线程技术。对称多处理机(SMP)系统具有多个处理器,所以具有真正的同时执行多个线程的能力;CMP技术通过在一块芯片上集成多个核心也具有真正的多线程能力;CMT技术则稍有不同,有的是依靠硬件执行线程切换来获得多线程能力,操作系统不再负责线程切换,因而这部分开销可以减少甚至消除,这方面典型的例子是Sun的UltraSPARCT1,它同时综合了CMP和CMT。微软的Windows 2000以后的操作系统皆支持多线程与超线程技术。攀枝花学院本科毕业设计(论文) 系统设计3. 系统设计3.1系统分析3.1.1 功能需求分析 即时通信系统是基于c/s模型的网络通信软件,分为客户端和服务器端两个部
38、分。客户端依靠服务器获取所需的网络资源,服务器为客户端提供必需的网络资源。服务器端包含数据库模块和消息处理两个模块;数据库模块用于存储用户个人信息、用户好友列表、和用户连接信息;消息处理模块包含查看好友资料、注册处理、登录处理、聊天处理、修改个人信息、添加好友、删除好友。具体功能结构图如图3.1图3.1 服务器功能模块图客户端包含登录和注册两个部分;登录模块包括用户信息修改、好友管理、消息功能三个模块。用户信息修改模块:实现修改个人信息。好友管理模块:实现好友的分组显示、添加好友、删除好友、查看好友资料。消息功能模块:实现发送消息、接收消息、聊天记录。客户端功能模块结构如图3.2 图3.2 客
39、户端功能模块图 3.1.2 性能需求分析 即时性用户之间通信时彼此的聊天信息能即时的传送给对方。服务器的消息记录能即时的更新。系统友好性登录界面、聊天窗口、好友信息资料界面、好友在线状态界面要美观简洁,友好大方,操作简单合理恰当。安全性用户需要服务器提供相关服务时需通过服务器的身份验证来获取相关服务。以此来提高系统的安全性。可扩展性可以很容易扩展系统功能和系统功能的更新。3.1.3 数据需求分析 本系统服务器端需要用到MySQL数据库;以此来存放用户的个人信息、用户好友列表、客户端与服务器通信的登录信息及网络连接信息。相关数据库表如下:用户信息表userinfo:名称字段类型长度说明账户use
40、ridvarchar24Primary key ,not null密码UserpwdVarchar24Not null昵称userNickvarchar24Not null姓名userNamevarchar24Not null性别userSexvarchar24Not null年龄userAgeint 12Not null个人签名iDiographvarchar48所在地cityvarchar24联系方式phonenumbervarchar24在线状态statusint12Other1Other2 Other3网络连接表connectinfo:名称字段类型长度说明账户(id)userIdvar
41、char24Primary key,not nullIp地址ipAddressvarchar24Not null端口Portint12Not null用户登录表friendtable:名称字段类型长度说明当前账户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、息,客户端对好友进行分组显示及好友状态显示。双击分组可以展开或收拢分组。添加好友:用户在主界面点击添加好友按钮出现添加好友的界面。在该界面中填写好友的账号即可实现好友的添加。删除好友:用户在好友列表的好友信息一栏上点击右键即可实现好友的的删除。查看好友资料:用户在好友列表的好友信息一栏上点击右键,选择查看资料就可以发送查看好友资料的请求。并将服务器发来的好友资料信息以列表的形式加入窗体显示。聊天:用户在好友列表的好友信息一栏上点击右键,如果好友在线选择聊天客户端就会发送请求获取好友的ip地址和端口号。服务器收到请求后就发送连接信息给相应的客户端,客户端利用此连接信息与好友实现通信聊天。聊天时有
46、聊天窗体,聊天窗体包括与好友聊天的聊天记录显示,用户发送聊天信息的发送编辑区域及与哪个好友聊天的标题。攀枝花学院本科毕业设计(论文) 系统关键技术实现4 系统关键技术实现4.1服务器实现服务器主要有myServer类、myThread类和MainWindow类;其中MainWindow类主要实现服务器窗口显示、开启、关闭。myServer类主要实现通信线程的创建、删除。myThread类主要实现通信的处理,即从客户端接收请求消息、数据库处理、向客户端发送消息。 服务器连接数据库关键代码: int main(int argc, char *argv) QApplication a(argc, a
47、rgv); db=QSqlDatabase:addDatabase(QMYSQL); db.setHostName(localhost); db.setUserName(root); db.setPassword(root); db.setDatabaseName(db_user); bool ok=db.open(); qDebug()db.driver(); qDebug()db.userName(); if(ok) qDebug()open database success; else qDebug()error open database becauselisten(QHostAddr
48、ess:LocalHost,9901) QMessageBox:critical(this,tr(多线程服务器), tr(无法启动:%1.).arg(server-errorString(); close(); return; else ui-serverStatuslabel-setText(tr(服务器运行在端口:%1.n).arg(server-serverPort(); ui-displayEdit-setText(server-serverAddress().toString(); 如图4.1所示:图4.1服务器端 当服务器接收连接请求时通过套接字描述符创建一个单独的通信线程,当客户端失去连接时删除该通信线程。其关键代码如下:void myServer:incomingConnection(int socketDescriptor) mythread=new myThread(socketDescriptor,0); connect(mythread,SIGNAL(clientDisconnectSignal(QString),mythread,SLOT(deleteLater(); connect(mythread,SIGNAL(sendchatFinishSignal(),this,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年玻璃制光学元件项目建议书
- 2025年租电动车的合同模板
- 2025年杭州从业资格证500道题答案
- 三年级下册数学教案-3.3 解决问的策略 丨苏教版
- 2025年道路货运从业资格证模拟考
- 江西省万载县株潭中学高中语文 6 孔雀东南飞教学实录 新人教版必修2
- 2025年工业含氧洗涤剂项目发展计划
- 2025年玉米新组合项目发展计划
- 第12课“韩信点兵”同余法的实现(教学设计)2024-2025学年六年级上册信息技术浙教版
- 2025年制剂仿制药合作协议书
- 2025年无锡职业技术学院单招职业技能测试题库带答案
- 液化天然气(LNG)相关的知识培训
- 施工升降机安全管理培训课件
- 2017华东六省一市优质课课件连乘问题11月29日
- 部编版(统编)一年级语文下册每课练习题(全册全套)
- DB62∕T 4134-2020 高速公路服务区设计规范
- 《影视鉴赏(第二版)》课件2-0故事片引子
- 青岛版科学一年级下册《塑料》教学设计
- 专利文件撰写殷红梅课件
- 中铁集团工程有限公司人力资源绩效考核暂行办法
- 部编版七年级语文下学期木兰诗对比阅读练习题(含解析答案)
评论
0/150
提交评论