




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学毕业设计(论文)用纸i嵌入式聊天系统设计与实现摘要近年来,我国嵌入式系统应用产品日益丰富,市场呈现快速增长趋势,尤其在通信、家电、电子、汽车、通信、交通、金融、网络、监控、工业自动化等领域应用更加广泛,发展嵌入式系统技术和产业已经成为惯彻“信息化带动工业化,工业化促进信息化”的方针,使我国产品由“中国制造”向“中国创造”迈进的突破口。随着计算进网络技术的发展和个人PC的普及,局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了为人们提供了一种新的联系方式,为在同一小范围内(如同一办公楼)的用户在即使通信上提供了方便。所以,本文将实现嵌入式聊天系统开发,为局域网用户提供方便的网络通信。本系统实现了聊天室的基本功能。该程序是在Ubuntu环境下编写和调试客户端与服务器端程序,实现了客户端和服务端连接并通信并实现了群聊、私聊和字体样式设置的功能。服务器端程序是通过vi编辑器,使用C、C+编写并利用了MySql数据库的相关知识。客户端程序是用Qt实现图形化界面和与服务器的通信。接下来本文将会详细讲解此聊天系统的关键代码的实现与功能,包括如何建立连接,如何进行登陆和注册,如何进行私聊和群聊,等等。关键词:嵌入式;聊天系统;数据库;QT太原理工大学毕业设计(论文)用纸iiDesignandimplementationofembeddedchatsystemAbstractInrecentyears,embeddedsystemapplicationproductsincreasinglyrichinourco-untry,themarketshowedatrendofrapidgrowth,especiallyinthecommunica-tions,homeappliances,electronics,automotive,communications,transportation,finance,networking,monitoring,industrialautomationandotherfieldsusedmorewidely,thedevelopmentofembeddedsystemtechnologyandindustryhasbecomeusedtotoruinformationizationtodriveindustrializationandindustrializationpro-motesinfor-matizationpolicy,tomakeourproductsfrommadeinChinatocreatedinChinaintothebreach.AscomputingintothedevelopmentofnetworktechnologyandthepopularityofPC,thedevelopmentoflocalareanetwork(LAN)isalsoquickly.Manygovernmentagencies,enterprises,schools,localareanetwork(LAN)isthefirstinaunifiedlinktogether,thenrespectivelyaccesstotheINTERNET,soinstantcommunicationtoolsbasedonlocalareanetwork(LAN),thusarisesatthehistoricmomentthecontactprovidesanewwayforpeople,forthesmallinthesameareaofanofficebuildinguserinevenifprovidesaconvenientcommunication.Therefore,theimplementationofembeddedchatsystemdevelopment,providenetworkcomm-unicationconvenientforusersinlan.Thissystemrealizedthebasicfunctionofthechatroom.TheprogramiswrittenintheUbuntuenvironmentanddebugclientandserverprogram,realizedtheclientandtheserverconnectionandcommunication.Serverapplicationisthroughthevieditor,useC,C+programminglanguageandusetherelatedknowledgeofMySqldatab-ase.TheclientprogramisimplementedusingQtgraphicalinterfaceandthecommu-nicationwiththeserver.Next,thisarticlewillexplainindetailtheimplementationofthekeycodeofthechatsystemandfunction,includinghowtoestablishaconnection,ifyouregisterandlogin,howtodoprivateandgroupchat,andsoon.Keywords:embedded;chatsystem;database;QT太原理工大学毕业设计(论文)用纸目录摘要.iAbstract.ii1绪论.11.1研究背景及意义.11.2研究现状.11.3研究内容.21.4论文组织结构.22开发平台和相关技术简介.32.1嵌入式系统定义.32.2嵌入式Linux的主要特征.32.3QT的发展及编程机制.32.4TCP/IP协议简介.52.5Socket套接字简介.62.6C+语言简介.83可行性研究和需求分析.103.1可行性研究.103.1.1经济可行性分析.103.1.2技术可行性分析.103.1.2法律可行性分析.103.2需求分析.103.2.1用户需求.11太原理工大学毕业设计(论文)用纸3.2.2功能需求.113.2.3性能需求.124系统的总体设计.134.1体系结构设计.134.2功能模块设计.134.2.1客户端功能模块的设计.144.2.2服务器端功能模块的划分.154.2.3数据库设计.155系统的详细设计及编码实现.165.1客户端实现.165.1.1连接服务器模块.175.1.2登陆模块.185.1.3注册模块.205.1.4私聊模块.225.1.5群聊模块.245.1.6设置字体模块.255.2服务器端实现.295.2.1服务器中数据库模块.295.2.2服务器模块实现.326系统使用简介和功能测试.356.1聊天系统使用介绍.356.2服务端编译.356.3客户端的编译.35太原理工大学毕业设计(论文)用纸6.4系统启动测试.356.4.1服务端启动测试.366.4.2客户端启动测试.366.4.3性能测试.38结论.39参考文献.40致谢.41外文原文.42中文翻译.53太原理工大学毕业设计(论文)用纸太原理工大学毕业设计(论文)用纸11绪论1.1研究背景及意义聊天工具又称为IM软件或者IM工具,它主要提供基于互联网络的客户端进行实时语音、文字传输。从技术上讲,主要分为基于服务器的IM工具软件和基于P2P技术的IM工具软件。1996年,4四位以色列人发明了IM的鼻祖ICQ“坏小子”,那时它只是一个主要搞网上呼叫的“小玩意”。1998年,腾讯研发团队为QQ用户突破100人而“兴奋不已”,2005年腾讯成为中国收入前三名的互联网公司。聊天其实一直是网民们上网的主要活动之一,只不过,当时网上聊天的主要工具只有聊天室,从前,并没有人认为即使通讯会有多大的出路,因为这种需要随时在网上的聊天工具一直受制于互联网的拨号上网。但是,当马化腾在2003年第一次进入“福布斯中国富豪榜”第九十九名,腾讯宣布QQ同时在线人数达到492万,这个互联网开始为即时通讯沸腾。显示网易开始发力,推出腾讯泡泡2004,然后是新浪收购UC加上微软的MSN也进入中国插入一脚。意识之间,即使通讯与搜索引擎一起,成了最热门的互联网领域。近年来随着嵌入式操作系统的发展及应用,嵌入式操作系统的网络和图形的功能越来越强大。嵌入式操作系统市场也变得十分火热,而以可裁剪的Linux系统作为嵌入式操作系统平台的领头羊得到了越来越多的应用和发展。随着使用嵌入式Linux平台下的用户人数持续增长使用嵌入式Linux的企业数目不断增加以及企业规模的不断扩大,人们对该平台下信息的传递、沟通和信息处理的效率也变得越来越高,而传统的信息交流和联系方式已经不能满足该现代生活和工作的需要。近年来计算机技术的快速发展,特别是信息网络的发展,深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种聊天系统更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。聊天系统作为一种方便人与人之间联系的实用系统便应运而生。聊天系统是为人们进行交流和联系提供的一个平台。因此开发一款基于嵌入式Linux平台下的即时通信聊天系统,通过提供完善的聊天系统的管理,可以实现嵌入式Linux平台下用户和企业信息的通讯具有极大的商业价值和意义。1.2研究现状伴随着网络的诞生,各种网络聊天工具也曾出不穷,最初的聊天工具只有简单的文本界面,功能也十分简单有限,但是随着各种技术的不断发展,现在的聊天工具已经拥有了更多的功能和美观的图形化界面,随着人们对网络的依赖,聊天工具已经不在是简单的一个工具而是成为了我们日常生活的一种生活方式。因此聊天工具也得到太原理工大学毕业设计(论文)用纸2了迅速的发展。在Windows平台下,我们常用的网络聊天工具主要是QQ、MSN、阿里旺旺、YY语音以及百度Hi等,其中MSN是微软公司推出的即使通信软件,MSN还提供包括必应移动搜索、中文资讯、手机娱乐和手机折扣等创新移动服务,满足了用户在互联网十点的沟通、社交、出行、娱乐等需求,它主要应用与国际;而国内的主流网络聊天工具QQ是由腾讯公司推出的集新闻信息、互动社区、娱乐产品和在线聊天、视频聊天和点对点断点许传文件及文件共享等功能与一体,QQ注册用户有1999年的2人到现在的上移用户是中国目前使用最广泛的聊天软件。阿里旺旺是为淘宝和阿里巴巴交易所量身打造的即使沟通交易工具,可以帮助用户轻松找客户,发布、管理商业信息,及时把握商机,随时洽谈做生意,简洁方便。YY语音是广州多玩信息技术有限公司研发的一款基于Internet团队语音通信平台,功能强大、音质清晰、安全稳定,其用户数量与语音通话质量远远领先于国内其他同类的软件。百度Hi是百度公司推出的一款集文字消息、语音视频通话、文件传输等功能的即使通信软件,您可以通过它方便找到志同道合的朋友,并随时与好友联络感情,主要有百度好友、兴趣搜人、兴趣群组、百度空间、密友排行、邮箱登陆等功能模块。而在嵌入式Linux平台下的网络聊天工具主要是LumaQQ,LumaQQ是一个嵌入式Linux平台的第三方主流QQ客户端。在LumaQQ之前,有OpenQ这样的前辈,所以LumaQQ不是第一个开源QQ客户端,但是LumaQQ的功能更强,界面更友好,代码注释更详实,这些都促成了第三方QQ客户端的大爆发,出现了Eva,Cyclone,TextQQ,MilyQQ,各种QQ挂机工具,各种WebQQ等等。也许有些已经消亡,也许有些还在继续,不管怎么样,LumaQQ开创了一个时代。1.3研究内容本文详细分析了课题的背景、嵌入式聊天系统的现状和发展趋势。以及作为嵌入式平台下开发的软件,应该重点考虑功能可靠性、小体积、低功耗等技术特点。但是不管是国内还是国外的聊天工具因为都注重其强大且完善的功能和美观的界面,却很少考虑系统的体积和功耗这两方面,而本系统却注重了对资源的合理有限利用,降低了对硬件的要求和平台的限制,同时不影响系统性能的前提下,寻求最低功耗和性能的结合点为研究目标。基于这一目标本系统客户端使用Qt信号和槽机制实现了点击相应按钮就会响应相应的功能,大大的减少了操作的繁琐程度和源程序的代码量,减小了系统的体积,使系统显得不仅简洁、美观,而且实用性很强。服务器端避免使用多进程而采用多线程来实现其功能,在一定的基础上减少了资源消耗。太原理工大学毕业设计(论文)用纸31.4论文组织结构本文共分六章,主要内容如下:第1章是绪论部分,概述了嵌入式聊天系统的研究背景及意义、聊天系统的研究现状、以及嵌入式聊天系统的研究内容。第2章对开发平台和相关技术进行简介。第3章介绍了嵌入式聊天系统的需求分析和可行性分析第4章介绍了嵌入式聊天系统的总体设计。第5章介绍了嵌入式聊天系统的详细设计和编码实现。第6章对嵌入式聊天系统进功能测试和分析。太原理工大学毕业设计(论文)用纸42开发平台和相关技术简介2.1嵌入式系统定义嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。实际上,嵌入式系统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统2.2嵌入式Linux的主要特征所系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,以内核较之传统的操作系统要小得多。专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。嵌入式Linux系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。嵌入式Linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式操作系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短。太原理工大学毕业设计(论文)用纸52.3QT的发展及编程机制Qt是一个跨平台C+图形用户界面应用程序开发框架,由挪威TrollRech公司开发,目前包括Qt/X11,基于Framebuffer的Qt/Emebedded,快速开发工具QtDesigner以及国际化工具QtLinguist等。2008年奇趣科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Dialog收购。2014年4月,跨平台继承开发环境QtCreator3.1.0正式发布,实现了对iOSde的完全支持,新增WinRT、Beautifier等插件,至此实现了全面支持iOS、Android、WP。人们所熟知的Linux下面的KDE环境就是基于Qt开发而成的,Qt支持Unix和Linux系统以及Windows系统。Qt的主要特点有:面向对象,容易扩展,并且允许真正的组件编程;Qt对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性,使用Qt类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台的开发难度;构件支持,对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为信号与槽的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。Qt的这个特点使它非常适合于真正的构建编程,同时各个组件之间的协同工作变得十分简单,并且Qt是直接基于Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码执行效率高。信号/槽机制是Qt的一个中心特征并且也是Qt与其他工具包最不相同的部分。在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。更一般地,我们希望任何一类的对象可以和他其他对象进行通讯。较老的工具包使用一种被称作回调的通讯方式实现同一目的。回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事情,你可以把另一个函数的指针传递给处理函数。处理函数在适当的时候使用回调。回调有两个主要缺点:首先他们不是类型安全的,我们从来都不能确定处理函数使用了正确的参数来调用回调,因此容易造成进程崩溃;另一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。Qt的信号与槽机制是不同的。Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。我们可以用connect()函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。当一个信号被发射,它所连接的槽会被立即执行就像一个普通函数调用一样。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发太原理工大学毕业设计(论文)用纸6射的信号也将返回。信号与插槽机制不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高度重用的类。信号和槽的机制是类型安全的:一个信号的签名必须与他的接收槽的签名相匹配。总体来看信号和槽构成了一个强有力的组件编程机制。布局管理类型用于描述一个应用程序的用户界面中的Widget是如何放置。当视窗缩放时,布局管理器会自动调整widget的大小、位置或是字号,确保他们相对的排列和用户界面整体仍然保有可用性。Qt内置的布局管理类型有:QHBoxLayout、QVBoxLayout、QGridLayout和QFormLayout。这些类型继承自QLayout,但QLayout非继承自QWidget而是直接源于QObject。他们负责widget的几何管理。想要创建更复杂的版面配置,可以继承QLayout来自定义版面配置管理员。其中QHBoxLayout是配置widget成横向一列,QVBoxLayout是配置widget成垂直一行,QGridLayout是配置widget在平面网格,QFormLayout是用于配置widget用于2栏标签-field。Qt的图形用户界面的基础是QWidget。Qt中所有类型的GUI组件如按钮、标签、工具栏等都派生自QWidget,而QWidget本身则为QObject的子类。Widget负责接收鼠标,键盘和来自窗口系统的其他事件,并描绘了自身显示在屏幕上。每一个GUI组件都是一个widget,widget还可以作为容器,在其内包含其他Widget。QWidget不是一个抽象类型。并且可以被放置在一个已存在的用户界面中;若是Widget没有指定父Widget,当它显示时就是一个独立的视窗、或是一个顶层widget。QWidget显示能力包含了透明化及Double-Buffering。Qt提供一种托管机制,当Widget于创建时指定父对象,就可把自己的生命周期交给上层对象管理,当上层对象被释放时,自己也被释放。确保对象不再使用时都会被删除。Qt的字体引擎能够在同一时间正确的显示各种不同的书写系统。并且Qt内部使用Unicode编码来存储文字。Qt的多国语言支持技术,可以让应用程序中的文字全部使用英文撰写,能够在完全不需修改程序的状况下,改变整个应用程序中的文字为另一个语系的文字,并能够协助处理不同语言的单、复数问题。独立的翻译文件使得新增支持语言相当容易,同时翻译文件(.ts)为XML格式可以直接编辑或使用QtLiguist进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。Qt附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。Qt的线程支持是独立于平台的线程类型,采用信号与槽机制,实现类型安全的线程间通讯。这使得它易于开发具可移植性的多线程Qt应用程序。并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器内核数自动调整使用的线程数。多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典范。太原理工大学毕业设计(论文)用纸72.4TCP/IP协议简介TCP/IP协议是TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。但TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。TCP/IP协议并不完全符合OSI的七层参考模型,OSI(OpenSystemInterconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层、会话层、表示层和应用层(应用层)。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPANET的设计者注重的是网络互联,允许通信子网(网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。TCP/IP协议族对应OSI如表2-1所示。TCP/IP结构对应OSI如表2-2所示。表2-1TCP/IP协议做对应OSIOSI中的层功能TCP/IP协议族应用层文件传输、电子邮件、文件服务、虚拟终端TFTP、HTTP、SNMP、DNS、Telnet等表示层翻译、加密、压缩没有协议会话层对话控制、建立同步点(续传)没有协议传输层端口寻址、分段重组、流量、差错控制TCP、UDP网络层逻辑寻址、路由选择IP、ICMP、OSPF、EIGRP、IGMP、RIP、ARP、RARP太原理工大学毕业设计(论文)用纸8数据链路层成帧、物理寻址、流量、差错、接入控制SLIP、CSLIP、PPP、MTU物理层设置网络拓补结构、比特传输、位同步ISO2110、IEEE802、IEEE802.2表2-2TCP/IP结构对应OSITCP/IPOSI应用层应用层表示层会话层主机到住几层(TCP)(又称传输层)传输层网络层(IP)网络层网络接口层(又称链路层)数据链路层物理层网络接口层对应OSI的物理层和数据链路层。其中物理层是定义物理介质的各种特性:机械特性;电子特性;功能特性;规程特性。数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理帧,抽出IP数据包,交给IP层。网络层负责相邻计算机之间的通信。其功能包括三方面:(1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。(2)处理输入数据报:首先检查其合法性,然后进行寻径-假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。(3)处理路径、流控、拥塞等问题。传输层提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。回应层向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。2.5Socket套接字简介应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程太原理工大学毕业设计(论文)用纸9提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。网络化的应用程序在开始任何通讯之前都必需要创建套接字。就像电话的插口一样,没有它就完全没办法通信。生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。其过程如图2-1所示:图2-1socket结构我们来分析一下上图,HostA上的程序A将一段信息写入Socket中,Socket的内容被HostA的网络管理软件访问,并将这段信息通过HostA的网络接口卡发送到HostB,HostB的网络接口卡接收到这段信息后,传送给HostB的网络管理软件,网络管理软件将这段信息保存在HostB的Socket中,然后程序B才能在Socket中阅读这段信息。太原理工大学毕业设计(论文)用纸10假设在图中的网络中添加第三个主机HostC,那么HostA怎么知道信息被正确传送到HostB而不是被传送到HostC中了呢?基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的无符号整数,由于没有转变成二进制,因此通常以小数点分隔,如:,正如所见IP地址均由四个部分组成,每个部分的范围都是0-255,以表示8位地址。值得注意的是IP地址都是32位地址,这是IP协议版本4(简称Ipv4)规定的,目前由于IPv4地址已近耗尽,所以IPv6地址正逐渐代替Ipv4地址,Ipv6地址则是128位无符号整数。假设第二个程序被加入图中的网络的HostB中,那么由HostA传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留Socket中的输入/输出信息,端口号是一个16位无符号整数,范围是0-65535,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的短口号保留给标准应用程序,比如pop3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体就可以区别每一个套接字。要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。常用的3种套接字类型:太原理工大学毕业设计(论文)用纸11流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。原始套接字(SOCK_RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字5。22.6C+语言简介在C基础上,一九八三年又由贝尔实验室的BjarneStrou-strup推出了C+。C+进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C+目前流行的编译器最新版本是BorlandC+4.5,SymantecC+6.1,和MicrosoftVisualC+2012。C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。C+由美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“CwithClasses”带类的C)。开始,C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtualfunction)、运算符重载(OperatorOverloading)、多重继承(MultipleInheritance)、模板(Template)、异常(Exception)、RTTI、命名空间(NameSpace)逐渐被加入标准。C+是一种面向对象的计算机程序设计语言。C+这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。它是一种使用非常广泛的计算机编程语言。C+是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。C+语言的优点:(1)C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。(2)C+设计成直接的和广泛的支持多种程序设计风格。(3)C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。(4)C+设计成尽可能与C兼容,借此提供一个从C到C+的平滑过渡。(5)C+避免平台限定或没有普遍用途的特性。(6)C+不使用会带来额外开销的特性。(7)C+设计成无需复杂的程序设计环境。太原理工大学毕业设计(论文)用纸12出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,BjarneStroustrup的C+语言的设计和演化(1994)里做了详尽的陈述。C+在一定程度上可以和C语言很好的结合,甚至大多数C语言程序是在C+的集成开发环境中完成的。C+相对众多的面向对象的语言,具有相当高的性能。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C+。太原理工大学毕业设计(论文)用纸133可行性研究和需求分析3.1可行性研究可行性分析是软件项目在正式立项目前必须进行的分析,目的不是解决问题,而是确定软件项目是否值得做以及能否用尽可能小的代价在尽可能短的时间内解决。可行性分析研究最根本的任务是对以后的行动方针提出建议,如果问题没有可行的解,应建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值得解,则推荐一个好的解决方案,并制定一个初步的工程计划。可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。一般从经济可行性、技术可行性、运行可行性、法律可行性和开发方案可行性等发面进行研究。3.1.1经济可行性分析经济可行性分析主要是惊醒成本效益分析,包括国际项目的开发成本,估算开发成本是否会高于项目预期的全部经费。分析系统开发对其他产品或利润带来的影响。因为本软件只做开发学习使用,在开发过程中用到的是开源的操作系统Ubuntu,所以暂且不考虑经济成本及盈利问题。3.1.2技术可行性分析技术可行性分析是根据客户提出的系统功能、性能及实现系统的各项约束条件,从技术的角度研究系统的可行性。这是系统开发过程中最难且最重要的工作,主要包括的内容如下:(1)风险分析:在给定的条件下能否实现所有功能。(2)资源分析:建立系统所需资源(人手)是否满足。(3)技术分析:相关技术的发展是否支持系统。对聊天系统的功能、性能以及实现聊天系统的各项约束条件的分析,根据本系统的设计目标来衡量所需的技术是否满足要求,本聊天系统设计是基于嵌入式Linux的聊天系统,基于嵌入式Linux的技术比较成熟,因此利用现有技术完全可以实现系统的功能目标。同时,因研究开发的期限长,系统可以在规定的时间内完成开发。该系统采用了经典的Client/Server模式进行开发,经典的C/S体系结构具有许多Browser/Server体系结构没有的优点。而且紧密的结合网络套接字编程技术,可以很好的实现了整个系统的开发。太原理工大学毕业设计(论文)用纸143.1.2法律可行性分析本系统设计开发中不涉及到合同、侵权、责任以及各种与法律相抵触的问题,因此在法律上是可行的。3.2需求分析需求分析是软件开发的基础和前提,也是最终目标软件验收的标准,它可以避免或者尽早的剔除早期的错误。需求分析比较详细地对用户的需求进行了分析,更加精准、细致的回答了目标系统必须做什么。通常我们在进行软件开发的过程中,往往由于需求分析的不足,而最终导致项目的失败。据统计,超过60%的失败项目都是由于项目需求不明确或错误造成的,由此可见,需求分析是软件工程中的一个重要环节,是关乎软件项目开发成败的重要因素。现在的软件项目中返工开销几乎占了总开发的一般么人导致返工的主要原因是需求分析不明确。从而引发了想怒开发中的一些列更改。这些更改可能导致浪费大量的资源、软件项目无法按时完成等严重问题。所以,需求分析是软件设计和实现的基础,是软件项目卖相成功的重中之重。通过对问题及其环境的理解与分析,为问题设计的信息、功能及行为建立模型,将用户需求精确化、完全化,整个活动构成软件开发生命周期的需求分析阶段。3.2.1用户需求互联网的普及,聊天工具已经成为人们日常的生活不可或缺的一部分。当今时代,即使通讯软件迅速发展,其聚集了娱乐资讯、社交、出行及聊天等强大的功能和拥有炫丽的图形界面,但同时软件的也体积也十分庞大,因此,用户希望研发一款软件不会拥有许多附加功能,软件体积较小。因此开发本系统也变得十分必需。根据用户对聊天功能的需求,主要可以概括为以下几点:1、操作简单方便,界面简洁。2、能够注册用户。3、拥有熟悉的聊天界面。4、能够进行私聊。5、能够进行群聊。6、运行稳定,安全可靠。3.2.2功能需求根据对用户需求的分析和对产品的定位,该聊天系统要实现主要功能如下:1、启动服务端,可以在服务器的终端看到用户的相关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理专升本考试题及答案
- 湖北会考试题及答案
- 协管员试题及答案
- 小学奥数试题及答案
- 文科文综试题及答案
- 寒假收假考试题及答案
- 物理 试题及答案
- 围城中学教师节活动方案
- 咖啡酒品鉴会活动方案
- 国际年会活动策划方案
- 深入理解Nginx(模块开发与架构解析)
- MOOC 中国文化概论-华南师范大学 中国大学慕课答案
- 初中人教版八年级下册期末物理真题模拟试卷经典套题
- JBT 11699-2013 高处作业吊篮安装、拆卸、使用技术规程
- 家长会课件:初中七年级家长会课件
- 厦门大学2023年826物理化学考研真题(含答案)
- 市政工程施工安全台帐范本12本(含内容)
- 《食管胃底静脉曲张》课件
- 周围性面瘫的分期治疗技术课件
- 初中英语2023年中考专题训练任务型阅读-判断正误篇
- 2022年江西南昌高新技术产业开发区人民检察院聘用制检察辅助人员招聘考试真题
评论
0/150
提交评论