欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
     

    嵌入式聊天系统设计与实现毕业设计论文.docx

    • 资源ID:3929240       资源大小:1.90MB        全文页数:67页
    • 资源格式: DOCX        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式聊天系统设计与实现毕业设计论文.docx

    北京邮电大学毕业设计 北京邮电 大 学毕业设计(论文)任务书第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. 湖南:中南大学, 2008.2周伯健. 嵌入式GPRS无线数据传输系统实现及应用D.江苏:东南大学,2009.3徐巍.基于ARM9的嵌入式图像采集系统的设计D.江苏:南京理工大学, 20094唐记弘.基于ARM的嵌入式工业控制器的研究D.陕西:陕西科技大学, 2009.5(美)多纳霍、(美)卡尔弗特. TCP/IP Sockets编程(C语言实现)M.北京:清华大学出版社, 2009.11.6赵祖龙.基于Qt/Embedded的嵌入式跨平台聊天系统设计J .信息技术, 2010.12.7郑莉,董渊. C+语言程序设计(第三版)M. 北京:清华大学出版社, 2003.8陈英,梁建武. Linux基础及应用教程J. 北京:水利水电出版社,2008.9丁林松,黄丽琴.Qt4图形设计与嵌入式开发D. 北京:人民邮电出版社, 2009.10王子强,刘海燕,李媛州.Linux下图形用户界面程序的开发与实现D.北京:清华大学出版社, 2007.11任善全,吕强,钱培德等. 一个基于QtEmbedded的嵌入式Linux应用程序的实现D, 计算机应用软件, 2006.2.12(美)W. Richard Stevens Stephen A. Rago. UNIX环境高级编程M. 北京:人民邮电出版社, 2006.5.13(美)Kenneth A .Reek. C和指针M. 北京:人民邮电出版社, 2008.4.14 Jennings,R.B.A study of Internet instant messaging and chat protocolsJ.IEEE Network,2006,20(4).16SAVRAJ S. GREWAL.Instant MessagingJ.The Scientist,2013,27(3).专业班级软件1004班学生靳茜茜要求设计(论文)工作起止日期2014年3月17日2014年6月27日指导教师签字日期2014年3月17日教研室主任审查签字日期系主任批准签字日期嵌入式聊天系统设计与实现摘 要 近年来,我国嵌入式系统应用产品日益丰富,市场呈现快速增长趋势,尤其在通信、家电、电子、汽车、通信、交通、金融、网络、监控、工业自动化等领域应用更加广泛,发展嵌入式系统技术和产业已经成为惯彻“信息化带动工业化,工业化促进信息化”的方针,使我国产品由“中国制造”向“中国创造”迈进的突破口。随着计算进网络技术的发展和个人PC的普及, 局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了为人们提供了一种新的联系方式,为在同一小范围内(如同一办公楼)的用户在即使通信上提供了方便。所以,本文将实现嵌入式聊天系统开发,为局域网用户提供方便的网络通信。 本系统实现了聊天室的基本功能。该程序是在Ubuntu环境下编写和调试客户端与服务器端程序,实现了客户端和服务端连接并通信并实现了群聊、私聊和字体样式设置的功能。服务器端程序是通过vi编辑器,使用C、C+编写并利用了MySql数据库的相关知识。客户端程序是用Qt实现图形化界面和与服务器的通信。接下来本文将会详细讲解此聊天系统的关键代码的实现与功能,包括如何建立连接,如何进行登陆和注册,如何进行私聊和群聊,等等。关键词:嵌入式;聊天系统;数据库;QTiiDesign and implementation of embedded chat systemAbstractIn recent years, embedded system application products increasingly rich in our co- untry, the market showed a trend of rapid growth, especially in the communica- tions, home appliances, electronics, automotive, communications, transportation, finance, networking, monitoring, industrial automation and other fields used more widely, the development of embedded system technology and industry has become used to toru "informationization to drive industrialization and industrialization pro- motes infor- matization" policy, to make our products from "made in China" to "created in China" into the breach. As computing into the development of network technology and the popularity of PC, the development of local area network (LAN) is also quickly. Many government agencies, enterprises, schools, local area network (LAN) is the first in a unified link together, then respectively access to the INTERNET, so instant communication tools based on local area network (LAN), thus arises at the historic moment the contact provides a new way for people, for the small in the same area of an office building user in even if provides a convenient communication. Therefore, the implementation of embedded chat system development, provide network comm- unication convenient for users in lan.This system realized the basic function of the chat room. The program is written in the Ubuntu environment and debug client and server program, realized the client and the server connection and communication. Server application is through the vi editor, use C, C + + programming language and use the related knowledge of MySql datab- ase. The client program is implemented using Qt graphical interface and the commu- nication with the server.Next, this article will explain in detail the implementation of the key code of the chat system and function, including how to establish a connection, if you register and login, how to do private and group chat, and so on.Key words:embedded; chat system; database; QT目 录摘 要iAbstractii1 绪论11.1 研究背景及意义11.2 研究现状11.3 研究内容21.4 论文组织结构22 开发平台和相关技术简介32.1 嵌入式系统定义32.2 嵌入式Linux的主要特征32.3 QT的发展及编程机制32.4 TCP/IP协议简介52.5 Socket套接字简介62.6 C+语言简介83 可行性研究和需求分析103.1 可行性研究103.1.1 经济可行性分析103.1.2 技术可行性分析103.1.2 法律可行性分析103.2 需求分析103.2.1 用户需求113.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 客户端的编译356.4 系统启动测试356.4.1 服务端启动测试366.4.2 客户端启动测试366.4.3 性能测试38结论39参考文献40致 谢41外文原文42中文翻译531 绪论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 研究现状伴随着网络的诞生,各种网络聊天工具也曾出不穷,最初的聊天工具只有简单的文本界面,功能也十分简单有限,但是随着各种技术的不断发展,现在的聊天工具已经拥有了更多的功能和美观的图形化界面,随着人们对网络的依赖,聊天工具已经不在是简单的一个工具而是成为了我们日常生活的一种生活方式。因此聊天工具也得到了迅速的发展。在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挂机工具,各种Web QQ等等。也许有些已经消亡,也许有些还在继续,不管怎么样,LumaQQ开创了一个时代。1.3 研究内容本文详细分析了课题的背景、嵌入式聊天系统的现状和发展趋势。以及作为嵌入式平台下开发的软件,应该重点考虑功能可靠性、小体积、低功耗等技术特点。但是不管是国内还是国外的聊天工具因为都注重其强大且完善的功能和美观的界面,却很少考虑系统的体积和功耗这两方面,而本系统却注重了对资源的合理有限利用,降低了对硬件的要求和平台的限制,同时不影响系统性能的前提下,寻求最低功耗和性能的结合点为研究目标。基于这一目标本系统客户端使用Qt信号和槽机制实现了点击相应按钮就会响应相应的功能,大大的减少了操作的繁琐程度和源程序的代码量,减小了系统的体积,使系统显得不仅简洁、美观,而且实用性很强。服务器端避免使用多进程而采用多线程来实现其功能,在一定的基础上减少了资源消耗。1.4 论文组织结构本文共分六章,主要内容如下: 第1章是绪论部分,概述了嵌入式聊天系统的研究背景及意义、聊天系统的研究现状、以及嵌入式聊天系统的研究内容。第2章对开发平台和相关技术进行简介。第3章介绍了嵌入式聊天系统的需求分析和可行性分析 第4章介绍了嵌入式聊天系统的总体设计。 第5章介绍了嵌入式聊天系统的详细设计和编码实现。第6章对嵌入式聊天系统进功能测试和分析。602 开发平台和相关技术简介2.1 嵌入式系统定义嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。实际上,嵌入式系统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫嵌入式系统2.2 嵌入式Linux的主要特征所系统内核小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,以内核较之传统的操作系统要小得多。专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合常紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。嵌入式Linux系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。嵌入式Linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式操作系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短。2.3 QT的发展及编程机制Qt是一个跨平台C+图形用户界面应用程序开发框架,由挪威TrollRech公司开发,目前包括Qt/X11,基于Framebuffer的Qt/Emebedded,快速开发工具Qt Designer以及国际化工具 Qt Linguist 等。2008年奇趣科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Dialog收购。2014年4月,跨平台继承开发环境Qt Creator3.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()函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。当一个信号被发射,它所连接的槽会被立即执行就像一个普通函数调用一样。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发射的信号也将返回。信号与插槽机制不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高度重用的类。信号和槽的机制是类型安全的:一个信号的签名必须与他的接收槽的签名相匹配。总体来看信号和槽构成了一个强有力的组件编程机制。布局管理类型用于描述一个应用程序的用户界面中的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格式可以直接编辑或使用Qt Liguist进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。Qt附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。Qt的线程支持是独立于平台的线程类型,采用信号与槽机制,实现类型安全的线程间通讯。这使得它易于开发具可移植性的多线程Qt应用程序。并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器内核数自动调整使用的线程数。多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典范。2.4 TCP/IP协议简介 TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是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(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层、会话层、表示层和应用层(应用层)。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPANET的设计者注重的是网络互联,允许通信子网(网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。TCP/IP协议族对应OSI如表2-1所示。TCP/IP结构对应OSI如表2-2所示。表2-1 TCP/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、IEEE802.2表2-2 TCP/IP结构对应OSITCP/IPOSI应用层应用层表示层会话层主机到住几层(TCP)(又称传输层)传输层网络层(IP)网络层网络接口层(又称链路层)数据链路层物理层 网络接口层对应OSI的物理层和数据链路层。其中物理层是定义物理介质的各种特性:机械特性;电子特性;功能特性;规程特性。数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理帧,抽出IP数据包,交给IP层。网络层负责相邻计算机之间的通信。其功能包括三方面:(1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。(2)处理输入数据报:首先检查其合法性,然后进行寻径-假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。(3)处理路径、流控、拥塞等问题。传输层提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。回应层向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。2.5 Socket套接字简介应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。网络化的应用程序在开始任何通讯之前都必需要创建套接字。就像电话的插口一样,没有它就完全没办法通信。生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。其过程如图2-1所示:图2-1 socket结构我们来分析一下上图,Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。假设在图中的网络中添加第三个主机Host C,那么Host A怎么知道信息被正确传送到Host B而不是被传送到Host C中了呢?基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的无符号整数,由于没有转变成二进制,因此通常以小数点分隔,如:198.163.227.6,正如所见IP地址均由四个部分组成,每个部分的范围都是0-255,以表示8位地址。值得注意的是IP地址都是32位地址,这是IP协议版本4(简称Ipv4)规定的,目前由于IPv4地址已近耗尽,所以IPv6地址正逐渐代替Ipv4地址,Ipv6地址则是128位无符号整数。假设第二个程序被加入图中的网络的Host B中,那么由Host A传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留Socket中的输入/输出信息,端口号是一个16位无符号整数,范围是0-65535,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的短口号保留给标准应用程序,比如pop3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体就可以区别每一个套接字。要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 。常用的3种套接字类型:流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。 原始套接字(SOCK_RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字5。22.6 C+语言简介在C基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C+。 C+进一步扩充和完善了C语言,成为一种面向 对象的程序设计语

    注意事项

    本文(嵌入式聊天系统设计与实现毕业设计论文.docx)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开