即时通信系统的开发与设计毕业设计Word文件下载.docx
- 文档编号:17242460
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:35
- 大小:531.79KB
即时通信系统的开发与设计毕业设计Word文件下载.docx
《即时通信系统的开发与设计毕业设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《即时通信系统的开发与设计毕业设计Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
Inthispaper,therealizationofarunonLAN-basedinstantmessagingsystemwindowsplatform.Thechatsoftwareincludesserverandclientoftwomodules,theclientsendsaservicerequesttotheservertotheclienttoprovideappropriateservicestotheserver.Clientmainimplementuserlogin,registration,chatandotherfunctions.Thesoftwareusesmulti-threadingtechnology,tcpcommunicationtechnology,udpcommunicationstechnology,andinthetransmissionofdatatoachievereductionmessageserializationanddata.
ThesoftwareenablesemployeeschatinternalcommunicationandtoavoidinternalstaffusesimilarsoftwareQQleakedinsideinformation,butthesoftwareonlytorealizethelogin,registration,chat,andotherbasicfunctions,therearemanydeficienciesneedtobeimproved.
Keywordsclient,server,c/s,instantmessaging,sockets
1前言
1.1课题背景及意义
即时通信(instantmessaging)是指网络上用来进行实时通讯的系统服务,人们可以使用即时通信软件以文字、图片、文档、语音、视频的形式通过网络进行异地实时信息交流。
随着互联网的不断普及,使用通信软件交流成为了人们生活中必不可少的一部分,而且人们对通信软件的功能需求的不断增大,即时通信软件的功能也日趋完善,除了最基本的通讯功能外,逐渐集成了电子邮件、博客、微博、音乐、电视、游戏、电子支付和搜索等多种功能,而这些功能的集成也使得即时通信软件已经不再是一个单纯的通信工具,它已经成为了集信息交流、娱乐、电子商务、商务办公、客户服务于一身的综合化信息平台。
即时通信将世界构建成了一个整体,实现了信息交流的无国界;
无论你身在美国、还是遥远的非洲、亦或是我们身处的中国,通过MSN或qq聊天就可以知道你现在正在干什么,将要干什么;
即时通信应用在企业办公上,企业工作效率得到了很大的提升,群组聊天让员工之间的技术探讨畅通无阻;
视频会议技术让你不再为繁琐的会议东奔西走;
这极大方便了我们的生活,提高了我们的生活品质。
因此,即时通信软件的设计与开发具有重要意义。
1.2国内现状及发展趋势
国内外即时通信系统发展迅速,特别是近年来即时通信软件层出不穷,目前人们熟知的有腾讯QQ、MSN、UC、skype等即时通信软件;
还有最近几年新起的微信、易信、米聊等移动端即时通信软件。
据一项数据调查显示:
2014年二季度末,QQ月活跃账户数达到8.29亿,微信和WeChat(微信海外版)合并月活跃账户数达4.38亿。
在微信月活账户持续增长的同时,QQ智能终端月活跃账户突破了5.21亿,同比增长45%,相比上季度也有6%的增幅。
据相关统计,目前中国智能手机用户在5亿左右,这意味着,智能手机用户几乎都活跃在手机QQ上。
这些数据表明移动端的即时通信软件现今有很大的市场,逐渐的由互联网络跨入移动互联网,发展潜力十分巨大。
而今,随着人们对生活娱乐的需求不断增加,即时通信软件不单单只有信息交流这一简单的功能,它还集成了与人生活紧密相关的一些功能;
比如:
腾讯手机qq上的滴滴打车、qq电影票、腾讯新闻、qq钱包等。
这些功能让你体会到生活的便捷与快乐;
让你足不出户就可以实现电影票的购买,而且还能帮你理财。
集成多种与人们生活息息相关的服务功能是IM的主要发展趋势
1.3现行系统的不足
随着电子商务的发展,支付工具遍地开花,即时通讯的经济价值将进一步增强,也不可避免地遭遇更大的安全性问题。
用户信息泄露,盗号木马、网络诈骗钓鱼等安全性问题屡见不鲜。
只要连接到Internet互联网,用户账号和密码被盗对黑客来说是件很容易的事。
即时通信软件一般要输入个人账号和密码,验证成功后方可为其提供服务。
而目前的即时通信厂商很少考虑它的认证机制。
这给黑客可乘之机,攻击者通过暴力破解、木马欺骗等破解方法窃取密码后冒充该用户来查看聊天记录并与其他用户进行通信,以此来窃取重要的信息。
目前,大多数即时通信软件在通讯时传递的信息或文件仅仅采用了弱加密甚至不
加密的方式,黑客能很容易的利用此缺陷来监听、篡改、窃取用户的重要数据,这种泄密可能给用户造成不可估量的损失;
尤其是对一些商业机构和金融机构,一旦泄密,将会构成巨大的商业安全威胁。
1.4解决方案
为了解决以上所提到的问题,本软件使用基于C/S模式的架构模型,采用基于Socket的局域网通信工具的设计与实现方法。
并且还采用tcp与udp通信协议来实现通信;
基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点。
而tcp协议是一种可靠的面向连接的传输协议,通过序列确认和包重复机制提供可靠的数据流发送和应用程序的虚拟连接服务。
经过3次握手建立连接发送数据。
但tcp不是及时的传输协议。
而udp协议的传输效率高,在企业局域网稳定安全的环境下实现用户聊天时用udp协议就可以很好的弥补tcp协议的不足。
而在数据方面,服务器将用户个人信息、用户好友列表信息、客户端连接信息存放于数据库中。
整个软件有客户端和服务器端组成,将所有功能封装于各式类文件中,后期维护简单。
2系统开发关键技术及开发环境
2.1qt及qtcreator开发环境
2.1.1qt简介
Qt是一个跨平台应用程序和UI开发框架。
使用qt只需一次性开发应用程序,无需重新编写源代码,便可跨不同的桌面和嵌入式操作系统部署这些应用程序。
QtSoftware的前生为创始于1994年的Trolltech(奇趣科技),Trolltech于2008年6月被Nokia收购,加速了其跨平台的开发战略。
总的来说,相对于老旧的MFC和目前编程行业通行的VC++工具,Qt以其入门简单,跨平台以及嵌入式等方面有着无可代替的优越性,当然MFC的完整性以及内容的丰富性是Qt不及的。
但是由于Qt为开源框架,得到了众多开发者的支持,因此qt的普及也在近千万开发人员的基础上,再次的得到发展。
自从诺基亚宣布停止开发其和英特尔公司共同推出的Meego系统并大幅度裁员以来,Qt用以移动开发人员集聚减少,从而使得曾经火热的Qt减缓了在移动设备上的发展的步伐,但是正因为如此,Qt就更加专注于跨平台。
信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。
信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言。
当一个特定事件发生的时候,一个信号被发射。
Qt的窗口部件有很多预定义的信号,但是我们总是可以通过继承来加入我们自己的信号。
槽就是一个可以被调用处理特定信号的函数。
Qt的窗口部件又很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。
信号和槽的机制是类型安全的:
一个信号的签名必须与它的接收槽的签名相匹配。
(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。
)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。
信号和槽是宽松地联系在一起的:
一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。
Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。
信号和槽可以使用任何数量、任何类型的参数。
它们是完全类型安全的,不会再有回调核心转储(coredump)。
2.1.2QtCreator简介
QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE),能够跨平台运行,支持的系统包括Linux,MacOSX以及Windows.
允许开发者为多桌面环境及移动设备平台创建应用程序。
它包括一个可视化调试工具和集成的GUI版面和外形设计师。
根据官方描述,QtCreator的设计目标是使开发人员能够利用qt这个应用程序框架更加快速及轻易的完成开发任务。
在功能方面,QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssitant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。
2.2mysql数据库介绍
MySQL的概述
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。
在2008年1月16号被Sun公司收购。
目前MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL是使用使用C和C++编写,并使用了多种编译器进行测试,保证源代
码的可移植性特点;
它还支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统;
它为多种编程语言提供了API。
这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等;
MySQL还支持多线程,充分利用CPU资源
并且优化了SQL查询算法,有效地提高查询速度。
它既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名提供TCP/IP、ODBC和JDBC等多种数据库连接途径,提供用于管理、检查、优化数据库操作的管理工具,可以处理拥有上千万条记录的大型数据库。
与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。
对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。
由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
2.3socket套接字介绍
socket套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
Socket套接字包括:
流套接字(SOCK_STREAM):
流套接字用于提供面向连接、可靠的数据传输服务。
该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。
流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(TheTransmissionControlProtocol)协议。
数据报套接字(SOCK_DGRAM):
数据报套接字提供了一种无连接的服务。
该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。
数据报套接字使用UDP(UserDatagramProtocol)协议进行数据的传输。
由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。
原始套接字(SOCK_RAW):
原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:
原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。
因此,如果要访问其他协议发送数据必须使用原始套接字。
2.4IP
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;
相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。
IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。
IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。
也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。
IP确认包含一个选项,叫作IPsourcerouting,可以用来指定一条源地址和目的地址之间的直接路径。
对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。
这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。
那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2.5TCP
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。
TCP将包排序并进行错误检查,同时实现虚电路间的连接。
TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。
应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。
DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
2.5udp协议简介
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。
根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。
UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。
UDP协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分别运行在同一台设备上的多个应用程序。
UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。
UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。
但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
2.6c/s模式介绍
C/S结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;
因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
C/S结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。
客户端完成数据处理,数据表示以及用户接口功能;
服务器端完成DBMS(数据库管理系统)的核心功能。
这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。
Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;
Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。
对应的优点就是客户端响应速度快。
具体表现在以下两点:
(1)应用服务器运行数据负荷较轻。
最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。
二者可分别称为前台程序与后台程序。
运行数据库服务器程序的机器,也称为应用服务器。
一旦服务器程序被启动,就随时等待响应客户程序发来的请求;
客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
(2)数据的储存管理功能较为透明。
在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。
所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。
在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。
在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。
这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
客户端需要安装专用的客户端软件。
首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。
特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。
还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
对客户端的操作系统一般也会有限制。
可能适应于Win98,但不能用于win2000或WindowsXP。
或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。
传统的c/s体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
而且代价高,效率低。
C/S架构的劣势还有高昂的维护成本且投资大。
首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。
其次,传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。
在JAVA这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 即时 通信 系统 开发 设计 毕业设计