




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)任务书第1页毕业设计(论文)题目嵌入式聊天系统设计与实现毕业设计(论文)要求及原始数据(资料)1综述QT的发展及其应用领域;2深入了解嵌入式聊天系统的设计方法及思想;3综述即时通信的发展及其技术支撑;4深入分析基于嵌入式的聊天系统关键应用的技术;5设计并实现聊天系统,完善其主要功能;6完成嵌入式聊天系统测试文档的编写;6训练检索文献资料和利用文献资料的能力;7训练撰写技术文档与学位论文的能力。第2页毕业设计(论文)主要内容1了解开发嵌入式聊天系统的背景;2综述嵌入式聊天系统开发平台及相关应用技术3对嵌入式聊天系统进行可行性分析;4对嵌入式聊天系统进行需求分析5分析及实现聊天系统的主要功能,主要包括验证用户名与密码是否匹配、登陆聊天系统、新用户注册、获得在线用户列表、群聊、私聊、设置字体颜色、设置字体大小及退出;6设计实现嵌入式聊天系统;7对聊天系统实现测试,并编写测试文档;8综述设计的聊天系统设计的意义及其不足之处;学生应交出的设计文件(论文)1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。第3页主要参考文献(资料)1蔡子裕基于ARM嵌入式无线点菜系统中断的研究与设计D湖南中南大学,20082周伯健嵌入式GPRS无线数据传输系统实现及应用D江苏东南大学,20093徐巍基于ARM9的嵌入式图像采集系统的设计D江苏南京理工大学,20094唐记弘基于ARM的嵌入式工业控制器的研究D陕西陕西科技大学,20095(美)多纳霍、(美)卡尔弗特TCP/IPSOCKETS编程(C语言实现)M北京清华大学出版社,2009116赵祖龙基于QT/EMBEDDED的嵌入式跨平台聊天系统设计J信息技术,2010127郑莉,董渊C语言程序设计第三版)M北京清华大学出版社,20038陈英,梁建武LINUX基础及应用教程J北京水利水电出版社,20089丁林松,黄丽琴QT4图形设计与嵌入式开发D北京人民邮电出版社,200910王子强,刘海燕,李媛州LINUX下图形用户界面程序的开发与实现D北京清华大学出版社,200711任善全,吕强,钱培德等一个基于QTEMBEDDED的嵌入式LINUX应用程序的实现D,计算机应用软件,2006212(美WRICHARDSTEVENSSTEPHENARAGOUNIX环境高级编程M北京人民邮电出版社,2006513(美)KENNETHAREEKC和指针M北京人民邮电出版社,2008414JENNINGS,RBASTUDYOFINTERNETINSTANTMESSAGINGANDCHATPROTOCOLSJIEEENETWORK,2006,20416SAVRAJSGREWALINSTANTMESSAGINGJTHESCIENTIST,2013,273专业班级软件1004班学生靳茜茜要求设计(论文)工作起止日期2014年3月17日2014年6月27日指导教师签字日期2014年3月17日教研室主任审查签字日期系主任批准签字日期嵌入式聊天系统设计与实现摘要近年来,我国嵌入式系统应用产品日益丰富,市场呈现快速增长趋势,尤其在通信、家电、电子、汽车、通信、交通、金融、网络、监控、工业自动化等领域应用更加广泛,发展嵌入式系统技术和产业已经成为惯彻“信息化带动工业化,工业化促进信息化”的方针,使我国产品由“中国制造”向“中国创造”迈进的突破口。随着计算进网络技术的发展和个人PC的普及,局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET因此基于局域网的即时通信工具,就这样应运而生了为人们提供了一种新的联系方式,为在同一小范围内如同一办公楼的用户在即使通信上提供了方便。所以,本文将实现嵌入式聊天系统开发,为局域网用户提供方便的网络通信。本系统实现了聊天室的基本功能。该程序是在UBUNTU环境下编写和调试客户端与服务器端程序,实现了客户端和服务端连接并通信并实现了群聊、私聊和字体样式设置的功能。服务器端程序是通过VI编辑器,使用C、C编写并利用了MYSQL数据库的相关知识。客户端程序是用QT实现图形化界面和与服务器的通信。接下来本文将会详细讲解此聊天系统的关键代码的实现与功能,包括如何建立连接,如何进行登陆和注册,如何进行私聊和群聊,等等。关键词嵌入式聊天系统数据库QTDESIGNANDIMPLEMENTATIONOFEMBEDDEDCHATSYSTEMABSTRACTINRECENTYEARS,EMBEDDEDSYSTEMAPPLICATIONPRODUCTSINCREASINGLYRICHINOURCOUNTRY,THEMARKETSHOWEDATRENDOFRAPIDGROWTH,ESPECIALLYINTHECOMMUNICATIONS,HOMEAPPLIANCES,ELECTRONICS,AUTOMOTIVE,COMMUNICATIONS,TRANSPORTATION,FINANCE,NETWORKING,MONITORING,INDUSTRIALAUTOMATIONANDOTHERFIELDSUSEDMOREWIDELY,THEDEVELOPMENTOFEMBEDDEDSYSTEMTECHNOLOGYANDINDUSTRYHASBECOMEUSEDTOTORU“INFORMATIONIZATIONTODRIVEINDUSTRIALIZATIONANDINDUSTRIALIZATIONPROMOTESINFORMATIZATION“POLICY,TOMAKEOURPRODUCTSFROM“MADEINCHINA“TO“CREATEDINCHINA“INTOTHEBREACHASCOMPUTINGINTOTHEDEVELOPMENTOFNETWORKTECHNOLOGYANDTHEPOPULARITYOFPC,THEDEVELOPMENTOFLOCALAREANETWORKLANISALSOQUICKLYMANYGOVERNMENTAGENCIES,ENTERPRISES,SCHOOLS,LOCALAREANETWORKLANISTHEFIRSTINAUNIFIEDLINKTOGETHER,THENRESPECTIVELYACCESSTOTHEINTERNET,SOINSTANTCOMMUNICATIONTOOLSBASEDONLOCALAREANETWORKLAN,THUSARISESATTHEHISTORICMOMENTTHECONTACTPROVIDESANEWWAYFORPEOPLE,FORTHESMALLINTHESAMEAREAOFANOFFICEBUILDINGUSERINEVENIFPROVIDESACONVENIENTCOMMUNICATIONTHEREFORE,THEIMPLEMENTATIONOFEMBEDDEDCHATSYSTEMDEVELOPMENT,PROVIDENETWORKCOMMUNICATIONCONVENIENTFORUSERSINLANTHISSYSTEMREALIZEDTHEBASICFUNCTIONOFTHECHATROOMTHEPROGRAMISWRITTENINTHEUBUNTUENVIRONMENTANDDEBUGCLIENTANDSERVERPROGRAM,REALIZEDTHECLIENTANDTHESERVERCONNECTIONANDCOMMUNICATIONSERVERAPPLICATIONISTHROUGHTHEVIEDITOR,USEC,CPROGRAMMINGLANGUAGEANDUSETHERELATEDKNOWLEDGEOFMYSQLDATABASETHECLIENTPROGRAMISIMPLEMENTEDUSINGQTGRAPHICALINTERFACEANDTHECOMMUNICATIONWITHTHESERVERNEXT,THISARTICLEWILLEXPLAININDETAILTHEIMPLEMENTATIONOFTHEKEYCODEOFTHECHATSYSTEMANDFUNCTION,INCLUDINGHOWTOESTABLISHACONNECTION,IFYOUREGISTERANDLOGIN,HOWTODOPRIVATEANDGROUPCHAT,ANDSOONKEYWORDSEMBEDDEDCHATSYSTEMDATABASEQT目录摘要IABSTRACTII1绪论111研究背景及意义112研究现状113研究内容214论文组织结构22开发平台和相关技术简介321嵌入式系统定义322嵌入式LINUX的主要特征323QT的发展及编程机制324TCP/IP协议简介525SOCKET套接字简介626C语言简介83可行性研究和需求分析1031可行性研究10311经济可行性分析10312技术可行性分析10312法律可行性分析1032需求分析10321用户需求11322功能需求11323性能需求124系统的总体设计1341体系结构设计1342功能模块设计13421客户端功能模块的设计14422服务器端功能模块的划分15423数据库设计155系统的详细设计及编码实现1651客户端实现16511连接服务器模块17512登陆模块18513注册模块20514私聊模块22515群聊模块24516设置字体模块2552服务器端实现29521服务器中数据库模块29522服务器模块实现326系统使用简介和功能测试3561聊天系统使用介绍3562服务端编译3563客户端的编译3564系统启动测试35641服务端启动测试36642客户端启动测试36643性能测试38结论39参考文献40致谢41外文原文42中文翻译531绪论11研究背景及意义聊天工具又称为IM软件或者IM工具,它主要提供基于互联网络的客户端进行实时语音、文字传输。从技术上讲,主要分为基于服务器的IM工具软件和基于P2P技术的IM工具软件。1996年,4四位以色列人发明了IM的鼻祖ICQ“坏小子”,那时它只是一个主要搞网上呼叫的“小玩意”。1998年,腾讯研发团队为QQ用户突破100人而“兴奋不已”,2005年腾讯成为中国收入前三名的互联网公司。聊天其实一直是网民们上网的主要活动之一,只不过,当时网上聊天的主要工具只有聊天室,从前,并没有人认为即使通讯会有多大的出路,因为这种需要随时在网上的聊天工具一直受制于互联网的拨号上网。但是,当马化腾在2003年第一次进入“福布斯中国富豪榜”第九十九名,腾讯宣布QQ同时在线人数达到492万,这个互联网开始为即时通讯沸腾。显示网易开始发力,推出腾讯泡泡2004,然后是新浪收购UC加上微软的MSN也进入中国插入一脚。意识之间,即使通讯与搜索引擎一起,成了最热门的互联网领域。近年来随着嵌入式操作系统的发展及应用,嵌入式操作系统的网络和图形的功能越来越强大。嵌入式操作系统市场也变得十分火热,而以可裁剪的LINUX系统作为嵌入式操作系统平台的领头羊得到了越来越多的应用和发展。随着使用嵌入式LINUX平台下的用户人数持续增长使用嵌入式LINUX的企业数目不断增加以及企业规模的不断扩大,人们对该平台下信息的传递、沟通和信息处理的效率也变得越来越高,而传统的信息交流和联系方式已经不能满足该现代生活和工作的需要。近年来计算机技术的快速发展,特别是信息网络的发展,深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种聊天系统更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。聊天系统作为一种方便人与人之间联系的实用系统便应运而生。聊天系统是为人们进行交流和联系提供的一个平台。因此开发一款基于嵌入式LINUX平台下的即时通信聊天系统,通过提供完善的聊天系统的管理,可以实现嵌入式LINUX平台下用户和企业信息的通讯具有极大的商业价值和意义。12研究现状伴随着网络的诞生,各种网络聊天工具也曾出不穷,最初的聊天工具只有简单的文本界面,功能也十分简单有限,但是随着各种技术的不断发展,现在的聊天工具已经拥有了更多的功能和美观的图形化界面,随着人们对网络的依赖,聊天工具已经不在是简单的一个工具而是成为了我们日常生活的一种生活方式。因此聊天工具也得到了迅速的发展。在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开创了一个时代。13研究内容本文详细分析了课题的背景、嵌入式聊天系统的现状和发展趋势。以及作为嵌入式平台下开发的软件,应该重点考虑功能可靠性、小体积、低功耗等技术特点。但是不管是国内还是国外的聊天工具因为都注重其强大且完善的功能和美观的界面,却很少考虑系统的体积和功耗这两方面,而本系统却注重了对资源的合理有限利用,降低了对硬件的要求和平台的限制,同时不影响系统性能的前提下,寻求最低功耗和性能的结合点为研究目标。基于这一目标本系统客户端使用QT信号和槽机制实现了点击相应按钮就会响应相应的功能,大大的减少了操作的繁琐程度和源程序的代码量,减小了系统的体积,使系统显得不仅简洁、美观,而且实用性很强。服务器端避免使用多进程而采用多线程来实现其功能,在一定的基础上减少了资源消耗。14论文组织结构本文共分六章,主要内容如下第1章是绪论部分,概述了嵌入式聊天系统的研究背景及意义、聊天系统的研究现状、以及嵌入式聊天系统的研究内容。第2章对开发平台和相关技术进行简介。第3章介绍了嵌入式聊天系统的需求分析和可行性分析第4章介绍了嵌入式聊天系统的总体设计。第5章介绍了嵌入式聊天系统的详细设计和编码实现。第6章对嵌入式聊天系统进功能测试和分析。2开发平台和相关技术简介21嵌入式系统定义嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。实际上,嵌入式系统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统22嵌入式LINUX的主要特征所系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,以内核较之传统的操作系统要小得多。专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。嵌入式LINUX系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。嵌入式LINUX是将日益流行的LINUX操作系统进行裁剪修改,使之能在嵌入式操作系统上运行的一种操作系统。嵌入式LINUX既继承了INTERNET上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式LINUX的特点是版权费免费购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短。23QT的发展及编程机制QT是一个跨平台C图形用户界面应用程序开发框架,由挪威TROLLRECH公司开发,目前包括QT/X11,基于FRAMEBUFFER的QT/EMEBEDDED,快速开发工具QTDESIGNER以及国际化工具QTLINGUIST等。2008年奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,QT被DIALOG收购。2014年4月,跨平台继承开发环境QTCREATOR310正式发布,实现了对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()函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。当一个信号被发射,它所连接的槽会被立即执行就像一个普通函数调用一样。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发射的信号也将返回。信号与插槽机制不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高度重用的类。信号和槽的机制是类型安全的一个信号的签名必须与他的接收槽的签名相匹配。总体来看信号和槽构成了一个强有力的组件编程机制。布局管理类型用于描述一个应用程序的用户界面中的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显示能力包含了透明化及DOUBLEBUFFERING。QT提供一种托管机制,当WIDGET于创建时指定父对象,就可把自己的生命周期交给上层对象管理,当上层对象被释放时,自己也被释放。确保对象不再使用时都会被删除。QT的字体引擎能够在同一时间正确的显示各种不同的书写系统。并且QT内部使用UNICODE编码来存储文字。QT的多国语言支持技术,可以让应用程序中的文字全部使用英文撰写,能够在完全不需修改程序的状况下,改变整个应用程序中的文字为另一个语系的文字,并能够协助处理不同语言的单、复数问题。独立的翻译文件使得新增支持语言相当容易,同时翻译文件(TS)为XML格式可以直接编辑或使用QTLIGUIST进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。QT附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。QT的线程支持是独立于平台的线程类型,采用信号与槽机制,实现类型安全的线程间通讯。这使得它易于开发具可移植性的多线程QT应用程序。并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器内核数自动调整使用的线程数。多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典范。24TCP/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的七层参考模型,OSIOPENSYSTEMINTERCONNECT是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是物理层、数据链路层网络接口层、网络层网络层、传输层、会话层、表示层和应用层应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPANET的设计者注重的是网络互联,允许通信子网网络接口层采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X25交换网或IEEE802局域网。TCP/IP协议族对应OSI如表21所示。TCP/IP结构对应OSI如表22所示。表21TCP/IP协议做对应OSIOSI中的层功能TCP/IP协议族应用层文件传输、电子邮件、文件服务、虚拟终端TFTP、HTTP、SNMP、DNS、TELNET等表示层翻译、加密、压缩没有协议会话层对话控制、建立同步点(续传)没有协议传输层端口寻址、分段重组、流量、差错控制TCP、UDP网络层逻辑寻址、路由选择IP、ICMP、OSPF、EIGRP、IGMP、RIP、ARP、RARP数据链路层成帧、物理寻址、流量、差错、接入控制SLIP、CSLIP、PPP、MTU物理层设置网络拓补结构、比特传输、位同步ISO2110、IEEE802、IEEE8022表22TCP/IP结构对应OSITCP/IPOSI应用层应用层表示层会话层主机到住几层(TCP)(又称传输层)传输层网络层(IP)网络层网络接口层(又称链路层)数据链路层物理层网络接口层对应OSI的物理层和数据链路层。其中物理层是定义物理介质的各种特性机械特性;电子特性;功能特性;规程特性。数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理帧,抽出IP数据包,交给IP层。网络层负责相邻计算机之间的通信。其功能包括三方面(1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。(2)处理输入数据报首先检查其合法性,然后进行寻径假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。(3)处理路径、流控、拥塞等问题。传输层提供应用程序间的通信。其功能包括一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。回应层向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。25SOCKET套接字简介应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字SOCKET的接口,区分不同应用程序进程间的网络通信和连接。网络化的应用程序在开始任何通讯之前都必需要创建套接字。就像电话的插口一样,没有它就完全没办法通信。生成套接字,主要有3个参数通信的目的IP地址、使用的传输层协议TCP或UDP和使用的端口号。SOCKET原意是“插座”。通过将这3个参数结合起来,与一个“插座”SOCKET绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。SOCKET可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入SOCKET中,该SOCKET将这段信息发送给另外一个SOCKET中,使这段信息能传送到其他程序中。其过程如图21所示图21SOCKET结构我们来分析一下上图,HOSTA上的程序A将一段信息写入SOCKET中,SOCKET的内容被HOSTA的网络管理软件访问,并将这段信息通过HOSTA的网络接口卡发送到HOSTB,HOSTB的网络接口卡接收到这段信息后,传送给HOSTB的网络管理软件,网络管理软件将这段信息保存在HOSTB的SOCKET中,然后程序B才能在SOCKET中阅读这段信息。假设在图中的网络中添加第三个主机HOSTC,那么HOSTA怎么知道信息被正确传送到HOSTB而不是被传送到HOSTC中了呢基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的无符号整数,由于没有转变成二进制,因此通常以小数点分隔,如1981632276,正如所见IP地址均由四个部分组成,每个部分的范围都是0255,以表示8位地址。值得注意的是IP地址都是32位地址,这是IP协议版本4(简称IPV4)规定的,目前由于IPV4地址已近耗尽,所以IPV6地址正逐渐代替IPV4地址,IPV6地址则是128位无符号整数。假设第二个程序被加入图中的网络的HOSTB中,那么由HOSTA传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留SOCKET中的输入/输出信息,端口号是一个16位无符号整数,范围是065535,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的短口号保留给标准应用程序,比如POP3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体就可以区别每一个套接字。要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为CLIENTSOCKET,另一个运行于服务器端,称之为SERVERSOCKET。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤服务器监听,客户端请求,连接确认。服务器监听是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。常用的3种套接字类型流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。数据报套接字(SOCK_DGRAM)数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。原始套接字(SOCK_RAW)原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字5。226C语言简介在C基础上,一九八三年又由贝尔实验室的BJARNESTROUSTRUP推出了C。C进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C目前流行的编译器最新版本是BORLANDC45,SYMANTECC61,和MICROSOFTVISUALC2012。C提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。C由美国ATIFTCPSOCKETWAITFORCONNECTEDQDEBUGM_SERVERBTN,SIGNALCLICKED,THIS,SLOTCONNSERVERCONNECTTHISM_THREAD,SIGNALCONNECTTOHOSTSUCCESS,THIS,SLOTLOGSERVSUCCESSVOIDMYDIALOGCONNSERVERQSTRINGIPGETIPINTPORTGETPORTTHISM_THREADSETIPPORTIP,PORTTHISM_THREADSTARTVOIDMYDIALOGLOGSERVSUCCESSTHISM_SERVERBTNSETENABLEDFALSETHISM_SERVERBTNSETTEXT“LOGSUCCESS“执行客户端程序后显示的运行界面如图52所示。图52登录界面输入服务器端的IP和PORT,点击“LOGSERVER”按钮,连接服务器成功后该按钮显示为“LOGSUCCESS”,且该按钮不可用,其连接服务器成功后的界面如图53所示。图53登录服务器成功界面512登录模块该模块主要是用于已注册用户通过输入ID号和密码登录聊天系统,登录成功则进入聊天系统,否则提示出错信息。在该模块的设计中,其重点就是设定好客户端与服务器进行通信时使用的协议,即确定客户端向服务器发送请求信息的格式,从而服务器端可以正确提取出请求类型和数据。该系统设计的登陆请求协议为“LOGINNICKNAMEID”。客户端程序有两个线程,主线程主要用来向服务器端发送请求信息,次线程主要用来接收服务器端的响应信息并发送给主线程。登录模块的主线程会向服务器端发送登陆请求,服务器端接收到该请求后作出登陆成功或失败的响应,此时次线程会收到该响应信息,若匹配则会向主线程发送信号LOGSUCCESS()否则发送LOGFAIL()信号,其主要代码如下WHILE1WHILESTREAMDATACONTAINS“FALSETCPSOCKETWAITFORREADYREADSTREAMDATAAPPENDTCPSOCKETREADALLQDEBUGSTREAMDATA“LOGINSUCCESSN“EMITLOGSCUCCESSELSEQDEBUGLOGINFAILEDN“EMITLOGFAIL在主线程中,当登录按钮被点击时会发送CLICKED()信号,从而触发槽函数CHECKLOGIN(),该槽函数主要功能首先向服务器端发送登录请求,此时次线程会收到该响应信息并发送给主线程,然后主线程会触发响应槽函数做出响应,其主要代码如下CONNECTTHISM_LOGIN,SIGNALCLICKED,THIS,SLOTCHECKLOGINCONNECTTHISM_THREAD,SIGNALLOGSCUCCESS,THIS,SLOTLOGINSUCCEESSCONNECTTHISM_THREAD,SIGNALLOGFAIL,THIS,SLOTRECVLOGFAILVOIDMYDIALOGCHECKLOGINQSTRINGNICKNAMETHISGETNICKNAMEQSTRINGPASSWDTHISGETPASSWDQSTRINGMESG“LOGIN“NICKNAME“PASSWDTHISM_THREADTCPSOCKETWRITEQBYTEARRAYMESGTOLATIN1IFTHISM_THREADTCPSOCKETWAITFORBYTESWRITTENQDEBUGM_THREADTCPSOCKETWRITEQBYTEARRAYMESGTOLATIN1IFTHISM_THREADTCPSOCKETWAITFORBYTESWRITTENQDEBUGGETNICKNAMETHISHIDETHISM_CHATWIDGETSHOW在连接服务器成功后,输入正确的ID号和密码登录成功后显示的聊天界面如图54所示。图54聊天界面当输入的ID号密码不匹配时,会弹出一警告对话框显示提示信息,并清空所填写的错误ID和密码。该功能设计的主要代码如下VOIDMYDIALOGRECVLOGFAILTHISM_NICKNAMEEDITCLEARTHISM_PASSWDEDITCLEARQMESSAGEBOXMSGBOXMSGBOXSETTEXT“NICKNAMEANDPASSWORDDONOTMATCH“MSGBOXEXEC登录失败时的执行结果如图55所示。图55登录失败界面该程序设计是基于C/S架构的,客户端需与服务器端进行交互,当登录成功或失败时,服务器端均会做出响应并会输出相应的响应信息,其界面如图56所示。图56服务器端登陆操作界面513注册模块该模块主要实现注册新用户,在该模块设计中,需要录入的用户信息包括昵称、密码、年龄和出生日期,不需要录入ID号,因为ID号会由系统自动分配,并将分配好的ID号发送给用户,然后用户就可以用该ID号和自己设定的密码登陆聊天系统。在该模块设计中,其难点是如何把用户填写的个人信息发送给服务器,因为主线程会向服务器端发送请求消息,因此用户信息要在组件中以信号的方式逐层向上传递给主线程。点击注册按钮M_SUBMITBTN后,弹出注册界面。填写好个人信息后点击提交按钮后会触发槽函数ACCEPTED(),同时注册界面会发出ACCEPTED信号,然后主线程会调用相应的槽函数GETUSERMSG函数获得用户的个人信息并发送给服务器。注册成功后,弹出提示对话框。在该模块设计中分为如下两部分1注册界面设计中,要完成的主要任务是点击“SUBMIT”按钮后要发送ACCPEPTED信号,其是实现的主要代码如下所示SUBMITSUBMITQWIDGETPARENTQDIALOGPARENTTHISDATANEWQSTRINGTHISDATACLEARQGRIDLAYOUTMAINLAYOUTNEWQGRIDLAYOUTTHISMAINLAYOUTADDWIDGETM_NICKNAMELABEL,0,0,1,1,QTALIGNRIGHTMAINLAYOUTADDWIDGETM_NICKNAMEEDIT,0,1,1,2,QTALIGNLEFTMAINLAYOUTADDWIDGETM_PASSWDLABEL,1,0,1,1,QTALIGNRIGHTMAINLAYOUTADDWIDGETM_PASSWDEDIT,1,1,1,2,QTALIGNLEFTMAINLAYOUTADDWIDGETM_AGELABEL,2,0,1,1,QTALIGNRIGHTMAINLAYOUTADDWIDGETM_AGEEDIT,2,1,1,2,QTALIGNLEFTMAINLAYOUTADDWIDGETM_BIRTHDAYLABEL,3,0,1,1,QTALIGNRIGHTMAINLAYOUTADDWIDGETM_BIRTHDAYEDIT,3,1,1,2,QTALIGNLEFTMAINLAYOUTADDWIDGETM_SUBMITBTN,4,1MAINLAYOUTADDWIDGETM_CLEANBTN,4,2THISSETLAYOUTMAINLAYOUTCONNECTTHISM_SUBMITBTN,SIGNALCLICKED,THIS,SLOTACCEPTCONNECTTHISM_CLEANBTN,SIGNALCLICKED,THIS,SLOTCLEANMESGTHISRESIZE400,400注册界面如图57所示。图57注册界面2在主线程中,要自定义槽函数来对注册界面发送的ACCEPTED()信号做出响应,该槽函数的主要功能是向服务器发送注册请求。当服务器端对该请求做出响应后,次线程收到该请求信息并以信号的方式发送给主线程,当主线程收到注册成功的信号时槽函数RECVSUBMITID会做出一系列响应行为如关闭注册对话框并弹出一对话框提示注册成功的ID号,其实现的主要代码如下CONNECTTHISM_SUBMITBTN,SIGNALCLICKED,THIS,SLOTSHOWSUBMITCONNECTTHISM_SUBMIT,SIGNALACCEPTED,THIS,SLOTGETUSERMESGCONNECTTHISM_THREAD,SIGNALSUBMITIDQSTRING,THIS,SLOTRECVSUBMITIDQSTRINGVOIDMYDIALOGSHOWSUBMITTHISM_SUBMITSHOWVOIDMYDIALOGGETUSERMESGQSTRINGDATATHISM_SUBMITGETDATAQSTRINGMESG“SUBMIT“DATATHISM_THREADTCPSOCKETWRITEQBYTEARRAYMESGTOLATIN1IFTHISM_THREADTCPSOCKETWAITFORBYTESWRITTENQDEBUGM_SUBMITCLOSEQMESSAGEBOXMSGBOXMSGBOXSETTEXT“SUBMITSUCCESS“QSTRINGQQID“ID“IDMSGBOXSETINFORMATIVETEXTQQIDMSGBOXEXEC在注册对话框中输入用户的个人信息后,点击“SUBMIT”按钮,注册界面关闭并弹出一对话框提示注册成功的ID号,其注册成功后界面如图58所示。图58注册成功后界面服务器端界面如图59所示。图59服务器端注册操作界面514私聊模块该模块主要实现用户与用户双方间的相互通信,其他用户对其聊天信息不可见。该功能实现是通过向服务器端发送私聊请求,其协议格式为“PRIVATENICKNAMEIDCHATMSGISBOLDISITALICISUNDERLINEFONTSIZERGB”,其中“NICKNAME”是发起者的ID号,而“ID”是接受者的ID,服务器通过对该请求消息的分析从而向通信双方转发聊天消息,此时客户端的次线程会收到服务器端发送过来的响应消息,该线程通过对接收到的相应进行分析,提取出有效数据,并发送给主线程,从而通信双方可看到聊天消息。用户在自定义的MYTEXTEDIT类继承QTEXTEDIT类,通过调用它的相关方法可获得要发送的消息,在在线用户列表中双击要通信的用户ID号,此时发送信号ITEMDOUBLECLICKED(),然后其处理槽函数PRIVATECHAT()会向服务器端发送私聊请求。服务器做出响应,客户端收到响应信息并会显示私聊信息。其主要代码如下CONNECTTHISM_CHATWIDGETM_RIGHT,SIGNALITEMDO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粮食作物栽培工三级安全教育(公司级)考核试卷及答案
- 非织造布卷绕分切工技能操作考核试卷及答案
- 建筑房子外观改造方案设计
- 中职物流管理专业课程体系建设
- 七年级生物上册 第二单元 第一章 第一节《练习使用显微镜》说课稿 (新版)新人教版
- 增城成人健康咨询方案
- 核电站施工成本效益分析报告
- 急救站考试题目及答案解析
- 第13章 土壤里的生物教学设计-2025-2026学年初中生物学苏科版七年级下册-苏科版
- 2023年教育行业薪酬调查报告
- 模具凸凹模工艺文件工序卡
- 麻醉科降低围术期低体温PDCA
- GB 42590-2023民用无人驾驶航空器系统安全要求
- 《精神科护理学》练习题及答案
- 护士执业注册体检表
- 直升机结构与系统版
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 外科学 胃十二指肠疾病
- 《智能投顾 大数据智能驱动投顾创新》读书笔记思维导图
- 职工自愿放弃社会保险协议
- 高中英语Unit5Firstaid文章BasicFirstAid人教版必修五
评论
0/150
提交评论