(通信与信息系统专业论文)点对点即时通信系统的研究与功能实现.pdf_第1页
(通信与信息系统专业论文)点对点即时通信系统的研究与功能实现.pdf_第2页
(通信与信息系统专业论文)点对点即时通信系统的研究与功能实现.pdf_第3页
(通信与信息系统专业论文)点对点即时通信系统的研究与功能实现.pdf_第4页
(通信与信息系统专业论文)点对点即时通信系统的研究与功能实现.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(通信与信息系统专业论文)点对点即时通信系统的研究与功能实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 本文对点对点( p 2 p ) 且p 时通信所涉及到的原理和技术进行了详细的研究与分 析,并根据验证原理的需要设计了点对点即时通信系统,该系统可以跨越不同 的n a t 网关进行文字,音频和视频通信,并可以进行文件传输的操作。本系统 的n a t 穿越方案是基于s t u n 胁议的穿越方案,可以跨越不同的c o n en a t 网关。 本文首先介绍了该课题的研究背景和国内外发展的现状以及存在的主要问 题,第二章阐述了该课题所涉及到的基本理论和原理,详细介绍了实现该系统 所涉及到的m f c 乔面编程,网络编程等相关技术。第三章和第四章介绍了两个 模块的整体构架和设计方案以及具体功能的实现方法。本系统选用w i n d o w sx p 开发平台,开发语言为c + + 6 0 ,底层通讯的实现使用m f c 中的c s o c k e t 类所 派生出的子类,为便于通信,采用u d p 协议,利用开源的h 2 6 3 编解码器实现 图像的压缩,以便进行视频图像传输,同时增强信道抗干扰能力,本文的n a t 穿越模块以s t u n 仂、议为基础,采用客户端朋艮务器架构,服务器对客户端之间 的通信只起辅助作用,客户端之间一旦建立连接,服务器端即刻脱离,不参与 即时消息的接收和发送。 系统在实验室现有条件下进行了基本功能测试以及性能测试,尤其关注不 同网关管理之下的计算机之间的通信,达到了预期的实验效果。 关键词:c s o c k e t ,u d p ,c o n e n a t ,n a t 穿越,h 2 6 3 。 a b s t r a c t a b s t r a c t t h et e c h n o l o g ya b o u tt h ep 2 pi n s t a n tm e s s a g i n gs y s t e mi sf u l l ys t u d i e di nt h i s p a p e r , ap 2 p i n s t a n tm e s s a g i n gs y s t e mw h i c hc a nc o m m u n i c a t i o nb e t w e e nd i f f e r e n t l o c a la r e an e t w o r kt h r o u g ht h ea s s i s t a n c eo ft h es e v e r , t h es y s t e ms u p p l y t h e f u n c t i o n ss u c ha sc h a r a c t e r , s p e e c h ,v i d e o ,a n df i l et r a n s f e r 。i no r d e rt oa c h i e v et h e f u n c t i o nw h i c hc a nc o m m u n i c a t i o nb e t w e e nt w oc o n en 瓯、t h es y s t e mc h o o s et h e n a ts c h e m eb a s e do nt h es t u np r o t o c o l ,w h i c ht a k et h eh a n d i c a pt h a tt w ol o c a l a r e an e t w o r kc a nn o tc o m m u n i c a t i o n f i r s t ,t h i sp a p e ri n t r o d u c et h eb a c k g r o u n do ft h ei s s u ea n dd e v e l o p m e n to ft h e t e c h n o l o g ya th o m ea n da b r o a d i nc h a p t e r2 ,t h ea u t h o re x p l a i n st h et h e o r yo ft h i s i s s u ea n dt h et e c h n i q u e ss u c ha sm f cp r o g r a m m ea n ds o c k e tp r o g r a m m e ,a n di n c h a p t e r3a n dc h a p t e r4 ,t h et r u s sa n dt h ed e s i g ns c h e m eo ft h es y s t e ma r ef u l l y e x p l a i n e d t h es y s t e mc h o o s et h ew i n d o w sx p a sd e v e l o p m e n tp l a t f o r ma n dc h o o s e v i s u a lc + + 6 0a st h ep r o g r a m m i n g l a n g u a g e t oc a r r y o u tt h e u n d e r l y i n g c o m m u n i c a t i o n ,t h es y s t e mu s e st h ec l a s sd e r i v e df r o mc s o c k e tc l a s sb e l o n g st o m f c ,t h eu n d e r l y i n gm a k e su s eo ft h eu d pd a t ar e p o r tp r o t o c o lt oc a r r yo nt h e c o m m u n i c a t i o na n du s eh 2 6 3c o d e ct oc o m p r e s st h ei m a g e sw h i c hc a nt r a n s m i tt h e v i d e oq u i c k l ya n da c c u r a t e l ya n di m p r o v ea n t i i n t e r f e r e n c ea b i l i t yo ft h ec h a n n e l t h e m o d u l ef o rt h en a tt r a v e r s a li sb a s e do ns t u n ,a n du s et h ec sa r c h i t e c t u r e ,t h e s e v e ri so n l yt h ea i do ft h ec l i e n t ,a ss o o na st h ec l i e n t sf r o md i f f e r e n tl o c a la r e a n e t w o r ke s t a b l i s hac o n n e c t i o n ,t h es e v e rf i n i s hi t sw o r ka n dd o e sn o tj o i ns e n d i n g a n dr e c e i v i n go fm e s s a g e s t h e n ,t h es y s t e mi s t e s t e d i nt h e l a b o r a t o r y f r o mf u n c t i o nt o c a p a b i l i t y , e s p e c i a l l yi nt h ee f f e c to ft h en a t , a n dr e a c h e sg o o de f f e c t k e yw o r d s :c s o c k e t ,u d p ,c o n en a t ,n a tt r a v e r s a l ,h 2 6 3 i i 第一章引言 第一章引言 第一节课题研究背景 i m ( 全称i n s t a n tm e s s a 西n g ) 即时通信,指的是能在很短延时的情况下在 互联网上传送信息的一种网络服务,是继电子邮件通信方式发明以来,最为高 效的互联网通信服务方式。互联网用户可以通过即时通信系统的客户端与其他 使用客户端的用户随意交谈,可以通过文字,也可以通过语音和视频,与电话 相比,价格更为低廉,互动性更强,因此,此项技术广泛应用于社会各个领域。 与电子邮件相比,即时消息凭借一种更加直接,简单和便捷的方式改变了 整个互联网用户的交流。即时通信系统提供给互联网使用者丰富的功能:文字、 语音以及视频聊天,文件传送,多人聊天,在线感知等,在网络世界中为用户 提供了一个丰富多彩的交流交友平台。即时通信系统是传统电话和电子邮件这 两种通信方式的补充,继承了上述两种通信方式的优点,同时由于i m 可以记录 用户之间的交流信息,解决了传统电话和电子邮件等工具产生的时效性差,传 送的信息有失真,通信双方收到的信息不对等等问题。 最早的即时通信产品叫做i c q ,诞生于1 9 9 6 年,作者是三个以色列青年, 产品投入使用之后,用户量急剧增长,而后i c q 被a o l 公司收购,目前i c q 在通信领域排名世界第一,i c q 的市场主要分布在欧美地区。就国内即时通信产 品而言,根据使用者角色的不同可以分为两大类:第一类是个人i m ,如:q q , 百度h i 等等。目前q q 在个人i m 领域占据了绝对优势,q q 已经成为中国用户 上网必备的工具。百度h i 工具的功能和q q 相似,在中国也具有很大数量的用 户群。第二类是企业用i m ,简称e i m ,按照用途的不同分为两大种类,第一类 是为了宣传拥有自己建设的网站,为了网站宣传设计的为网站服务的i m ,比如 阿里巴巴的贸易通,它集成即时文字,语音,视频,邮件,商务短信等管理功 能,此类i m 可以降低企业服务客户的费用,随时挖掘客户的潜在商业需求。第 二类是大中型企业为方便企业内部员工交流设计的i m ,如i b m 的l o t u s s o m e t i m e ,能实现文字,多人语音,文件传输,共享办公设备等功能。 个人即时通信系统经过残酷的市场竞争,优胜劣汰,市场格局已经成型并 第一章引言 趋于稳定,m s n 在全球范围内广泛使用,是全球及通信领域的霸主,其主要优 势在于微软的w i n d o w s 操作系统在世界范围内使用人数最多,m s n 已成为微软 操作系统的标准配置,用户量居高不下,而在中国q q 的地位无人可以撼动,中 国用户给了q q 强大的支持。虽然个人i m 市场已经趋于平稳,但是i m 在企业 应用正在急速发展,因为每个企业需要的功能都各不相同,所以企业i m 仍然具 有很大的开发价值。 第二节课题研究的意义 随着多媒体技术的不断发展,多媒体在通信领域的应用也越来越广泛,人 们在通信过程中不再满足于单纯的文字通信,所以语音视频通信应运而生,使 人与人之间的网络通信更加丰富多彩,因此音频和视频采集和处理技术日益受 到重视,本文的所涉及到的即时通信系统的研究重点就是音频和视频的处理技 术。 点对点技术具有独特的优势,其优点如下: 1 对于互联网上的资源的利用率高。在客户端n 务器这种互联网模式下, 客户端的资源可能会因为网络结构的原因,无法得到充分利用,与之不同的是 在点对点模式下,网络上被闲置的资源很少,整个点对点网络可以被看做一个 具有庞大处理能力的系统,系统中的各个节点利用自己的资源协同作战。 2 服务器的负担大幅度减小。在传统的客户端服务器模式之下,在节点访 问服务器的高峰时段,由于节点的数量达到峰值,服务器所要处理的时间数量 达到最大,此时如果超过服务器所能承受的负担的极限值,服务器会出现瘫痪 现象,服务器一旦瘫痪,整个网络都无法运作,点对点技术可以使服务器需要 处理的工作大大减少,有的点对点网络甚至可以不用服务器。 3 信息的传递不用中转,避免产生信息副本,降低资源的损耗从而降低了 成本。 4 弱化服务器功能,使每个客户端成为一个对等点。 点对点技术同样存在着不足,其不足如下: 1 不易管理。点对点传输的安全性低的问题一直存在,因为缺乏中转站的 管理,所以在安全性方面要加大研发的成本,实现过程更加的困难和复杂。 2 不稳定。点对点网络不稳定的原因在于网络节点可以不受约束的进入或 2 第一章引言 退出点对点网络,这会使节点的访问存在不稳定性,因为用户不知道想要连接 的节点是否在网络上。 3 跨越不同网关的通信的效果不稳定。因为需要建立连接的两个不同节点 所处的网关类型可能不同,不同的网管类型可能会阻碍连接的建立。 总之,纯点对点模式和传统即时通信模式各有自己的优点和不足,如何更 高效的将这两种技术结合起来,已成为之后即时通信系统开发所要探讨的重点, 本文根据研究课题的需求,研究了穿越的基本原理,结合u d p 简单穿越协议的 具体方案,设计出了可以在不同n a t 网关之间进行通信的点对点即时通信系统。 第三节关于本文 本文主要研究p 2 p 即时通信的相关原理并根据相关原理设计了两个功能模 块,第一个模块主要验证了文字,音频和视频通信的相关原理,第二个模块主 要对文件传输功能进行了验证。 本文的写作思路和设计方式如下: 第一章介绍了即时通信系统产生的背景,发展历史以及发展现状,随后介 绍了点对点技术和传统的客户端服务器模式相比较,各自的有点以及不足,随 后引出将两种方式相结合的设计思路。 第二章详细介绍了设计该系统所需要的基础知识,基本理论,包括m f c 的 基本知识以及在本文中需要用到的相关功能模块,底层通的s o c k e t 编程的相关 原理,w i n d o w s 下的多媒体编程,包括音频编程和视频编程,以及n a t 穿越的 相关知识和基本原理。 第三章介绍了系统的整体结构以及总体设计方案,包括两个客户端进行文 字,音频和视频通信和文件传输的具体流程以及n a t 穿越功能中的客户端服务 器架构。 第四章详细介绍了该系统各个模块的具体实现方法和关键代码的分析和说 明。详细说明了界面,音频,视频类以及文件传输功能的设计思路,并根据n a t 穿越方案用实现穿越模块的功能。 第五章在实验室现有条件下搭建了测试平台对系统的各项功能进行测试, 并分析测试结果。 第六章对本文所涉及到的工作做了简单的总结并提出了以后工作的改进方 3 第一章引言 案。讨论了在设计n a t 穿越功能的设计过程中存在的不足,点对点即时通信的 一大难点就是n a t 穿越,本文主要解决了c o n en a t 穿越方案,对于s y m m e t r i c n a t 涉及的不多。 4 第二章p 2 p 即时通信系统的基本原理和基本技术 第二章p 2 p 即时通信系统的基本原理和基本技术 第一节m f c 发展简史和基础知识简介 1 9 8 7 年w i n d o w s 问世,它为使用d o s 系统的程序员提供了一种新的编程 模式,这种模式是由事件驱动的,并不受设备的影响。从8 0 年代末期开始,微 软公司选择c 语言,用于w i n d o w s 程序的开发,从而使得c 语言能够在p c 开 发中站稳脚跟。 最初微软开发的接口函数适合于使用c 语言的运行平台p j 。美国国家标准学 会于1 9 8 9 年提出了c 语言标准,从而使得c 语言成为应用程序和系统程序开发 的一种标准语言。c 语言是一种过程性编程语言,没有采用今天常用的面向对象 的特点【2 j 。因为当时没有出现面向对象的思想,w i n d o w s a p i 被开发人员认为是 没有瑕疵的,但是,随着面向对象思想的产生,将面向对象的思想法方加入到 w i n d o w s a p i 中就成为了必然,由此,m f c 应运而生【5 i 。 m f c 全称为m i c r o s o f tf o u n d a t i o nc l a s s ,即微软基础类库,用来为w i n d o w s 开发c + + g u i 应用程序,m f c 类库是面向对象的,具有c + + 语言的继承性,多 态性,以及封装性等特性,m f c 中包含各种各样的应用程序结构类,用来帮助 开发者开发应用软件,图2 1 展示了微软基础类库中重要类之间的关系,其中 c o b j e c t 类是源头,由c o b j e c t 类的派生类c c m d t a r g e t 类的主要职能是向特定 的对象发送响应事件,所以希望接收事件的类均由c c m d t a r g e t 类派生出来【4 1 , 希望接收系统或窗口事件的类有c w n d 类( 窗口类) ,c v i e w 类( 视图类) , c d o c u m e n t ( 文档类) ,c w i n y h r e a d 类( 用户接口线程类) 以及c w i n a p p 类( 应用程 序类) 垆j 。微软基础类库几乎为每个类都创建了一个静态数据结构,称为消息表, 用来将事件映射到对象中对应的处理程序中。c w i n t h r e a d 类派生自c c m d t a r g e t 类。代表m f c 应用程序中的线程执行,所有m f c 中的应用程序至少包含一个 c w i n t h r e a d 对象,这个对象就是c w i n a p p 类【5 】。c w n d 类是微软基础类库中 图形用户界面的基类,这个类与窗口密切相关,涉及到窗口就一定会提到c w n d 类。c f r a m e w n d 类派生自c w n d 类,对单文档类有很好的支持作用。c v i e w 类 的职责是对文档类提供给它的信息进行处理并通过图形或界面显示出来, 5 第二章p 2 p 即时通信系统的基本原理和基本技术 c d o c u m e n t 类用于处理应用程序运行时所用的所有数据。 c o b i e c t 0 n 1 g d 图2 1m f c 类的层次结构 在m f c 中,文档视图的结构处于非常重要的地位。因为在微软开发m f c 的时候,需要一个统一的框架来封装w i n d o w sa p i 函数,为了使创建的应用程 序的健壮性得到提高,文档视图结构是必须了解的。在文档视图结构中, 文档包含了存储的数据,视图时该数据的某个位置的一个窗口。这个位置可以 成为一个数据库连接,一个磁盘文件或者某个其他的机制。文档视图结构有 两种样式,即单文档界面( s d i ) 和多文档界面( m d i ) ,由于本文主要用到的 是单文档界面,所以着重介绍s d i 4 j 。s d i 应用程序包含一个文档类,并且只能 有一个文档类,该文档类派生自m f c 中的c d o c u m e n t 类,这个类的主要作用是 控制数据,而视图类派生白c v i e w 类,该类提供了每个视图正确运行期必须使 用的函数,最重要的是,c v i e w 类派生的所有视图类都必须使用o n d r a w 函数刁 能展示自己,正是文档类与视图类的相互合作的机制,才为一个应用程序的健 壮稳定奠定了基础。 除了基于文档视图结构的应用程序之外,m f c 还包含基于对话框的应用程 序,它包含一个基于单个窗体的窗口,有各种窗口控件,如按钮,列表框,静 态控件。当不需要客户程序区来绘制应用程序时,或者当应用程序是基于窗体 6 第二章p 2 p 即时通信系统的基本原理和基本技术 的应用程序并且只需要各种控件与用户打交道的时候,可以选用基于对话框的 应用程序,本文的即时通信的客户端就是基于对话框编写而成的。 第二节s o c k e t 网络编程技术的研究 2 2 1 计算机网络基础知识 计算机网络是相互连接的独立自主的计算机的集合,最简单的网络形式由 两台计算机组成 6 1 。网络的状况是多种多样极其复杂的,不同的网络可能有不同 的通信媒介,不同种类的设备,不同的操作系统,不同的应用环境,不同的业 务种类,不同的投资和积累,以及不同的延续性。这些因素相互影响,相互交 织,形成了复杂的网络系统环境。网络体系结构就是使上述的这些不同的媒介 连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足用 户的不同需求的一种关联方式。网络体系结构解决上述异质性问题的方法是采 用分层的方法将复杂的网络互联问题分成许多简单,处理单一的问题。 本文所设计的系统是基于t c p i p 协议的,t c p i p 通常被认为是一个四层协 议系统:链路层,网络层,传输层和应用层,每一层负责不同的功能。链路层 又叫做数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算 机中对应的网络接口卡,它们起处理针对电缆或其他任何传输媒介的物理接 口细节。网络层又叫做互连网层,处理分组在网络中的活动例如分组路由选择。 传输层主要为两台主机上的应用程序提供端到端的通信。在t c p i p 协议组件中, 有两个互不相同的传输协议,t c p 和u d p ,t c p 是可靠的传输协议,u d p 是不 可靠的传输协议。应用层负责处理特定的应用程序细节。 计算机之间通过网络发送数据的时候,发送之前要在数据的头部和尾部加 上特定的识别信息,这个添加识别信息过程称为封装,封装指的就是在数据上 添加额外的信息,就好像给商品添加包装外壳一样。在网络标准参考模型中, 相同的通信协议间交换的最小单位的信息称为协议数据单元p d u 。因为o s i 参 考模型中的每一层都要依靠下层提供的服务,下层为了使上层可以识别数据包, 在数据包上加入本层的一些识别信息,比如一些控制信息。这样数据自上而下 递交并不断进行封装,最终到达物理层并进行传输。 7 第二章p 2 p 即时通信系统的基本原理和基本技术 2 2 2 网络通信的过程及网络编程的基本概念 互联网的迅速发展要求越来越多的互联网应用程序必须具有网络通信的能 力。从w i n d o w sn t 和w i n d o w s9 5 开始,微软把联网功能加入到了它的操作系 统,使得应用程序的网络通信能力得到普及,应用程序的联网功能建立在 w i n s o c k 接口的基础之上。网络节点之间的网络通信过程大致如下:一个节点上 的某个应用程序等待另一个节点上的应用程序提出连接请求,这个应用程序处 于等待连接状态,一旦另一个节点上的应用程序试图与当前应用程序连接,双 方即可建立网络连接,从而两个程序可以进行信息交互,如图2 2 。 试图打开连接 接受连接请求 客户机 服务器 ( 监控连接) 双向发送信息 2 2 3s o c k e t 网络编程 图2 2 通信连接过程 在s o c k e t 套接字编程出现之前,网络编程是十分复杂的,为了简化网络编 程的复杂性,b e r k e l e y 大学通过实验设计出了一种简单的调用机制,这种调用是 为网络通信服务的,这种调用就是所谓的s o c k e t 套接字。s o c k e t 套接字的出现为 网络编程提供了方便,套接字存在的环境叫做通信区域,通信区域是一个高度 抽象的概念,它的主要作用是找出两个或多个通过套接字通信的进程之间的共 同的特性并把这些特性综合起来。 8 第二章p 2 p 即时通信系统的基本原理和基本技术 套接字网络编程分为两类,即基于t c p 的网络编程( 面向连接) 和基于u d p 的网络编程( 面向无连接) ,网络编程都分为两端【9 j :发起请求的一端和等待请 求的一端,我们将这两端命名为客户端和服务器端,图2 3 和图2 4 分别描述了 基于t c p 和基于u d p 的网络编程的过程,其中基于面向连接的套接字编程强调 用户端和提供服务端的概念的区分,从图中也可以清晰的看到两者的分工不同, 而基于无连接的套接字编程用户端和提供服务端的概念就比较模糊,两端是可 以转换角色的。 服务器端程序 创建套接字( s o c k e t ) 7 绑定套接字( b i n d ) f l 监听客户请求( 1 i s t e n ) 7 接受请求( a c c e p t ) 和客户端通信 ( s e n d r e c v ) f 返回等待另一请求 7 关闭套接字 客户端程序 创建套接字( s o c k e t ) ? i 向服务器发送连接请求 i c o n n e c t 和服务器通信 l ( s e n d r e c v ) 7 关闭套接字 图2 3 基于t c p 的网络编程过程 9 第二章p 2 p 即时通信系统的基本原理和基本技术 服务器端程序 创建套接字( s o c k e t ) 7 绑定套接字( b i n d ) f 等待接收数据 l r e c v t i o m j 7 关闭套接字 客户端程序 创建套接字( s o c k e t ) 7 1 日j 服分器及达裂拈 ( s e n d t o ) 7 关闭套接字 图2 4 基于u d p 的网络编程过程 2 2 4c s o c k e t 类的编程模式 c s o c k e t 类是由c a s y n c s o c k e t 继承而来的,在m f c 中c a s y n c s o c k e t 逐个 封装了w i n s o c ka p i ,每个c a s y n c s o c k e t 对象代表一个w i n d o w ss o c k e t 对象, 使用c a s y n c s o c k e t 类要求程序员对网络编程较为熟悉。相比起来,c s o c k e t 类 是c a s y n c s o c k e t 的派生类, 继承了它封装的w i n s o c k a p i ,更加容易使用。使 用c s o c k e t 类的进行编码的具体方法和步骤如下:第一步,构造一个该类的对象, 使用该对象的类中自带的创建函数产生一个句柄,这个函数的原型为c r e a t e ( ) 。 客户端程序的编写过程中,创建函数一般使用默认参数,而对于服务器端而言, 必须在调用函数时将函数的端口参数改为自己设定的端口值。第二步,豁听和 连接。假如是客户端,要调用自带的连接函数连接到服务器端,假如是服务器 端,则要调用监听函数,收到连接请求立即用接收请求函数与客户端建立连接 0 | 。第三步,通信。通信有两种方法,一种是c s o c k e t ,c s o c k e t f i l e 和c a r c h i v e 类混合使用进行数据的发送和接收,另一种是使用c s o c k e t 类成员函数 1 0 第二章p 2 p 即时通信系统的基本原理和基本技术 r e c e i v e ( ) ,r e c e i v e f r o m ( ) ,s e n d ( ) 以及s e n d t o ( ) 函数进行数据通信。第四步,通 信结束后重载关闭套接字函数,并注意申请内存的释放。 c s o c k e t 类封装了上一节中所介绍的网络编程的全部流程,是网络编程的编 码过程大大简化,通过c s o c k e t 类和m f c 中其他应用类的结合使用,可以很方 便的设计出具有独特功能的网络软件,因为本文设计的是即时通信系统,所以 底层通信模块采用的是基于u d p 的网络编程,数据通信没有采用三种类相结合 的方式,而是对该类自带的函数进行调用或进行重载来完成通信任务。 第三节w i n d o w s 多媒体编程技术的研究 2 3 1w i n d o w s 多媒体技术概述 多媒体的本意是指应用程序中不同种类的内容的显示和交互,一般意义上 说,任何包含声频或视频元素内容的应用程序都可以看做;是多媒体应用程序。 v c + + 包含了与微软多媒体相关的开发功能,形成了统一的标准接口函数,这些 标准接口函数主要由三个软件模块组成,这三个模块分别为m m s y s t e m 库, 设备驱动程序以及控制接口驱动程序 1 3 ,其组成和原理如图2 5 所示。从图中可 以看出,由于上层应用程序通过中间的翻译层控制驱动层,再由翻译层调用驱 动层的底层函数控制多媒体设备,所以v c + + 中的多媒体扩展接口是与硬件设备 没有关系的。其中高层接口包含在m m s y s t e m d l l 中,调用接口函数可以直接或 间接地控制多媒体设备 14 1 。本文在音频录放模块和视频模块中采用的就是v c + + 提供的w i n d o w s 多媒体编程接口组合编写而成。 第二章p 2 p 即时通信系统的基本原理和基本技术 应用层 翻译层 驱动程序层 多媒体应用程序 一 、, m ms y s t e m 动态链接库 多媒体控制援口 底层函数 ( mc i ) 设备驱动程序m c i 驱动程序 、, 多媒体设备和元素 图2 5 多媒体扩展的结构和原理 2 3 2w i n d o w s 下的音频编程基础 w i n d o w s 下的音频函数有很多类型,可以编写出功能更加强大的音频处理 程序,因为低级音频处理函数属于最底层的函数,直接与音频驱动交互作用, 用回调函数或者窗口消息来对音频类型的数据进行操作,而且低级音频函数向 开发者提供了与硬件设备的类型无关的函数接口,这样控制起来比较灵活。 提到w i n d o w s 音频处理,首先要提到的就是w e f o r m a t e x 这个结构体, 该结构体定义了音频波形的具体格式,这个结构体包含一般音频波形的所有格 式信息,该结构体包含七个成员变量:1 w f o r m a t y a g ,两字节长度,定义了音 频波形数据的结构类型,在本文中将这个值设为脉冲编码调制类型。2 n c h a n n e l s ,两字节长度,定义了声道数目,在本程序中设为单声道。3 n s a m p l e s p e r s e c ,四字节长度,规定了音波的采样率,因为之前采用了脉冲编码 调制,所以该成员的值只能设为8 0 k h z ,1 1 0 2 5 k h z ,2 2 0 5 k h z 和4 4 1 k h z 。4 w b i t s p e r s a m p l e ,两字节长度,规定了每个抽样的大小,单位是b i t ,在本程序中 规定为。5 n b l o c k a l i g n ,两字节长度,其值为w b i t s p e r s a m p l e 与n c h a n n e l s 的 积再除以8 。6 n a v g b y t e s p e r s e c ,四字节长度,规定了数据的平均传输速率,其 值为n s a m p l e s p e r s e c 和n b l o c k a l i g n 的积。7 c b s i z e ,两字节长度,用来存储这 1 2 第二章p 2 p 即时通信系统的基本原理和基本技术 个数据结构实际的长度。在音频编程之前,首先要做的就是初始化 w a v e f o r m a t e x 这个结构体,否则系统将不知道录音或放音所采用的具体格 式而导致录音或放音失败。 音频的录制和播放要用到回调函数,回调函数的其中一个参数是函数指针, 这个指针被用为调用它所指向的函数 1 引。回调函数并不是在该函数执行的时候 直接调用,而是在某个消息或事件被触发时由该事件或消息所关联的宏或者函 数进行调用,以便对事件或消息进行反应。回调函数的调用机制与中断处理函 数极为相似,在需要的条件被触发之后自动被执行。使用回调函数有三个步骤: 首先,声明回调函数,设定函数指针参数。然后,定义函数指针所指向的函数。 最后,设置触发条件,便于系统自动调用函数。在本文中,利用回调函数很容 易的实现了音频的录入和播放过程。 在本文中语音捕捉采用的是w i n d o w s 底层的w a v e l n x x x a p i 系列函数,语 音的播放采用的w a v e o u t x x xa p i 系列函数,具体的实现流程将在第四章中作 具体的阐述。 2 3 3w i n d o w s 下的视频捕捉编程基础 视频捕捉的定义比较直观,指的是操作系统通过视频相关的驱动操作硬件 设备收集视频类型的数据。在当前的开发环境下开发视频捕捉相关的程序主要 有有两种法案:第一种是利用设备自带的视频采集卡的开发包中的函数接口进 行程序的开发,第二种是采用v f w 进行开发。第一种方法虽然应用起来比较方 便,但这种方法对硬件的依赖性很强,不够灵活,一旦设备变更,还要重新进 行开发,而第二种方法不依赖于硬件设备,与第一种方法相比更加灵活稳定。 因此本文采用了第二种方法,开发视频捕捉模块。 v f w 的主要功能就是进行视频捕捉,并进行视频数据的处理,不依赖于硬 件设备,以音频和视频交错格式作为其设计接口的文件格式标准,由v f w 工具 包捕捉的视频都是a v i 格式的。以音频和视频交错格式作为设计标准,v f w 包 含了一整套功能强大的高级函数接口,可以对采集到的数据进行随心所欲的操 作,且效率极高。为了给视频编程提供方便,c + + 系列软件对v f w 给予了很好 的支持,提供了v f w 3 2 1 i b ,w i n m m 1 i b ,m s a c m 3 2 1 i b 等库,其中对于开发人员而 言,最为方便的是,c + + 提供了窗口类a v i c a p ,此窗口类的功能非常强大,提 第二章p 2 p 即时通信系统的基本原理和基本技术 供了一个基于消息的,操作简单的接口,可以访问多媒体相关设备,并且可以 对视频类型数据的采集进行操作和控制,使程序的可控性大大加强。由于a v i c a p 属于窗口类,所以要对窗口句柄进行操作,才能进行视频编程,此外,为了实 现方便,c + + 提供了一些宏,例如用a v i c a p 创建了一个捕捉窗口并将它连接到 视频驱动以便关联硬件设备之后【3 0 j ,程序就可以通过发送简单的按顺序捕捉视 频数据这种类型的消息来开始采集视频类型的数据。进行视频捕捉之后如果需 要结束,只需要发送停止捕捉类型的消息即刻终止视频类型数据的采集。表2 1 列举了本文所需要用到的宏或函数。 表2 1 常用a v i c a p 提供的函数和宏的功能 函数和宏消息功能 c a p c r e a t e c a p t u r e w m d o w 创建捕捉窗口 c a p d r i v e r c o n n e c t w mc a pd r i v e rc 0 小小厄c t 连接窗口与驱动器 c a p d r i v e r d i s c o n n e c t w m ( 1 气pd r i v e rd i s c o n n e ( 了 断开窗口与驱动器 c a p f i l e s e t c a p t u r e f i l e w mc a ph l es e tc a p n 瓜ef i l e 设置捕捉文件 c a p c a p t u r e s e q u e n c ew m _ c a p _ s e q u e n c e 捕捉视频到文件 c a p c a p t u r e s t o p w mc a ps t o p 停i 匕捕捉 c a p c a p m r e g e t s e t u pw m _ c a p _ g e t _ s e q u e n c e _ s e t u p 获取捕捉参数 c a p c a p t u r e s e t s e t u pw m _ c a p _ s e t _ s e q u e n c e _ s e t u p 设置捕捉参数 视频捕捉采集到的每帧图像不像其他信息那么便于传输,图像的数据量未 经压缩是非常大的,不对图像进行压缩就在网络上传播显然是不符合实际情况 的。因此,视频的捕捉之后要经过压缩才能传输,这就需要用到视频压缩算法。 视频压缩的算法和标准各种各样,其中m p e g 系列的i t u t 的h x x x 系 列标准占据了主导地位,其中常见的视频压缩方法有m p e g 1 , m p e g 一2 ,m p e g 4 ,h 2 6 3 等4 l ,这四种方法性能的比较表2 2 所示,通过上述四 种方法的比较,最终决定采用h 2 6 3 编码,因为在这几种方法中h 2 6 3 编码图像 压缩后最小,而且抗干扰力也比较强,最适合在网速不是很稳定的环境应用。 1 4 第二章p 2 p 即时通信系统的基本原理和基本技术 表2 2 常用的各种视频压缩编码标准比较 c i f 图像匿缩或大小 编觥解码单元抗干扰能力图像l 蝴邑 ( 3 5 2 * 2 8 8 ) m p e g l0 4 1 5 m b i t s 图像组很差好 m p i b g 2 4 m b i t s 图像组较差 很好 妒b ,3 0 4 1 0 m b i t s视频曙橡强 与码率有关 h 2 6 3o - 抛5 m b i t s 帧较强般 通过对视频捕捉技术和各类压缩方法进行比较,本文最终选择v f w 工具包 结合h 2 6 3 编解码的方式进行视频的捕捉和压缩,视频捕捉的具体过程积极视频 图像的压缩过程和传输过程将在第四章中做具体的实现和阐述。 第四节p 2 p 技术及n a t 穿越技术的研究 2 4 1 p 2 p 相关技术的研究 p 2 p ( 点对点) 技术,又叫做互联网对等技术,是一种可以使网络中任意两个 节点不通过其他辅助措施就可以直接进行连接的通信技术。在互联网对等技术 中,要求网络中的每一个接入点都可以提供服务和使用别的点提供的服务,每 一个节点的职能在该网络中都相同,没有功能特殊的节点。点对点网络中,任 意一个加入到网络中的接入点都平等的分配到整个网络资源的使用权,所有权 以及控制权。点对点网络的应用可以划分为两个类型:协同工作和资源共享。 协同工作的典型应用包括即时通信系统,文件搜索,网络游戏等,而资源共享 中最为典型的应用就是资源下载,例如b i t t o r r e n t 。p 2 p 不管从思想上还是从技 术上,都将想要接入点对点网络的接入点连接了起来,消除了具有中转作用的 特殊接入点,从而使点与点之间的交流和协作更加方便快速且具有效率。从 n a s p t e r 音乐搜索网站开始,点对点软件就成功的进入了人们的生活,互联网对 等技术改变了网络旧有的格局,在点对点网络中每个接入点享有的权利都是均 等的,人们通过p 2 p 软件可以实时交流并共享各种资源,正因为具有以上的优 点,越来越多的p 2 p 软件被开发出来并被应用,对等互联网技术的发展必将更 第二章p 2 p 即时通信系统的基本原理和基本技术 加深入到用户生活的方方面面。 p 2 p 网络的结构多种多样,还没有制定出一个标准的拓扑结构,但从p 2 p 中央化的程度这一角度考虑,可以分为三大类:纯点对点模式,中心化模式以 及混合模式 2 2 1 。在纯点对点模式之下,服务器不存在与网络之中,网络是由许 多链状节点组成的,整个网络是一种分散式的状态网络采用的协议是对等协议, 每个节点的纯点对点软件搜索处于网络中的用户节点,并可以直接建立连接, 并不需要通过服务器,此类拓扑结构的优点在于用户可以按自己的规则建立自 己的网络环境,就像u 盘一样,即插即用。但是存在的问题也很明显,网络之 中缺乏管理,安全性和控制性比较差,而且因为用户可以随意加入和离开网络, 所以网络节点一直处于变化的状态,难以被其他用户发现。中心化模式需要在 网络中建立一个中央服务器,这个服务器的作用是发现网络中的节点,并建立 文件目录,并对目录实行管理。其优点是可以采用灵活的搜索算法发现网络中 的各个节点,是整个网络便于管理,资源共享率高。但其缺点依然明显,它与 传统的客户端i n 务器模式过于相似,因而不可避免的继承了它单点瓶颈的缺点, 容易造成单点故障。混合模式是上述两种模型的折中处理方式,网络中也设立 服务器,但是服务器只具有集中登记的功能,仅用于辅助节点之间建立连接, 这种方式即降低了服务器的单点负担,又可以用过服务器对各个节点进行一定 程度上的管理,兼顾了自由性和安全可管理性。本文的系统采用的就是这种混 合模式。 2 4 2n a t 穿越基本技术的研究 n a t ,英文全称为n e t w o r ka d d r e s st r a n s l a t o r s ,即网络地址转换,n a t 技 术最初产生的原因是i p 地址的日益缺乏,i p 逐渐成为稀缺资源,n a t 技术的最 初目的就是为了实现地址的重用【28 | 。 n a t 可以被分为两类:基本n a t 和n a p t 。最先被提出的是第一类,它是 根据实际情况的需要被提出并被应用的,假如在一个局域网内的节点在一般情 况下只与本局域网内的节点通信,所有节点中只有极少的点需要和外部网络连 接,那么只要这些极少数的节点可以被外部网络识别出来就可以了,其他节点 的i p 只要在本网中被识别出来即可。基本类型的n a t 正是结合这种情况提出来 的,其功能极为单一,只负责将内网i p 转换为外部网络可以识别的i p ,进行连 1 6 第二章p 2 p 即时通信系统的基本原理和基本技术 接外网的活动,基本类型n a t 仅仅修改i p 地址,不修改端口号。n a p t 全称 n e t w o r ka d d r e s s p o r tt r a n s l a t o r s ,不仅会改变i p 数据包的源i p 地址数据,而且 会改变i p 数据包中的源端厂1 号,如图2 6 所示,存在一个局域网络,客户端a 是这个网络中的一台主机,内网i p 为1 0 0 0 1 ,网络以一个网络地址转换设备作 为网关,如图所示这个网关具有一个可供其他外网识别的地址,同时具有内网 识别的地址,假如客户端a 的某个应用程序启动并创建了一个u d p 套接字,这 个套接字绑定在了计算机特定的端口,假如这个套接字想访问局域网外的一台 主机上的应用程序,这台主机同样创建了u d p 套接字并绑定在了特定的端口, 则当从客户端a 发出的数据包经过n a t 网关的时候,网关设备会为数据的发送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论