基于IP的语音通信—毕业设计论文_第1页
基于IP的语音通信—毕业设计论文_第2页
基于IP的语音通信—毕业设计论文_第3页
基于IP的语音通信—毕业设计论文_第4页
基于IP的语音通信—毕业设计论文_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ip的语音通信作者姓名: 专业名称:电子信息科学与技术指导教师:摘要进入21世纪以来,因特网得到了飞速的发展并且迅速的普及和应用,随着3g时代的到来和现代网络技术的迅猛发展,传统的pstn(公共交换电话网络)上的语音业务将逐步迁移到ip网络上。同时,随着ip技术框架中汇聚网络研究的发展和ip语音技术的提出,voip技术为基于ip网络的语音通信提供了强大而有效的手段,以该技术为基础的语音通信必将成为下一代网络应用的发展方向之一。voip是一种以ip电话为主并推出相应的增值业务的技术。该技术是以ip技术的分组化、数字化传输技术为基础。voip的技术的出现不仅使得人们日常所使用的一些简单的通话服

2、务具备了灵活性以及智能性,而且由于ip网络可以快速灵活地引入新的比较复杂的业务,使得运营商会相对容易的切入电信业务。这也必将导致利用ip网络实现包括移动电话、家庭电话、寻呼和邮件等业务的用户迅速增加。并且voip允许一些新的通信方式,能够提供多媒体的内容满足用户的需求也是一大趋势,这些都将成为推动voip发展的最终决定因素。本文研究了ip语音通信技术基本概念和原理,并对常用的通信协议做了较详细的介绍,在此基础上透过近几年主流ip语音通信技术的发展趋势,提出了解决ip语音通信的一些关键技术。最后论文在整合一系列技术的基础上通过wifi实现了在两台笔记本上的ip语音交流测试,并取得了较好效果。关键

3、词: udp 语音通信 数字化技术abstractin the 21 century, the internet have developed rapidly and rapid popularization and application, with the arrival of the era of 3 g and the rapid development of modern network technology, the traditional pstn (public switched telephone network) of voice business will gradual

4、ly move to ip network. at the same time, along with the ip technology in network convergence framework of the development of the research and ip voice technology puts forward, voip technology based on ip network for the voice communication provides a powerful and effective means, to the technology a

5、s the foundation of voice communication will become the next generation network application development direction of. voip is a ip telephone primarily and launch the corresponding value-added business technology. this technology is the grouping of ip technology, digital transmission of technology as

6、 the foundation.voip technology not only makes people daily in the use of some simple call service have the flexibility and intelligent, and because the ip network can quickly flexibility to the introduction of new complex business, making operation chamber of commerce is relatively easy to cut into

7、 the telecoms business. this will lead to use of ip network realization including mobile phones, home phone, paging and mail business users increase quickly. and voip allows some new communication mode, can provide the multimedia content to meet the demand of user is also a big trend, which will bec

8、ome the impetus of the development of the voip finally decided to factors.this paper studies the ip voice communications technology basic concept and principle, and to commonly used communication protocol to do a more detailed presentation, based on this through the mainstream ip voice communication

9、s technology in recent years the development trend, and puts forward some solutions to ip voice communication of some key technology. the last in a series of technology integration paper based on wifi is realized by two laptop on ip voice communication test, and achieved good results.keywords: udp ,

10、 voice communication, digtal technology目录摘要iabstractii目录iv前言11 ip语音通信技术设计概述21.1 ip语音通信的发展历史21.1.1目前国内外ip语音的研究概况21.1.2 ip语音技术的发展趋势31.2 ip语音技术的市场前景41.3 ip语音通信的未来52 visualc+网络编程技术分析72.1 mfc开发技术72.1.1 mfc特点72.1.2 mfc的优势82.1.3 mfc的文档视图的概念82.2网络编程技术92.2.1 套接字技术简介92.2.2 套接字通信过程92.3多线程编程技术102.3.1多线程技术102.3.

11、2 win32环境下多线程编程技术112.3.3 mfc环境下多线程编程技术122.3.4线程同步技术123 ip语音通信开发协议及需求分析143.1 ip协议143.1.1 ip协议简介143.1.2 ip协议基本原理143.1.3 ip地址153.2 udp协议153.3 需求分析163.3.1 语音软件设计背景需求分析163.3.2 语音通信系统功能模块需求分析174 ip语音通信系统的实现214.1 开发平台214.2 语音连接模块实现214.2.1 主要数据结构214.2.2 主要算法实现224.3语音采集模块实现234.3.1 主要数据结构234.3.2 主要算法实现244.4 语

12、音压缩模块实现254.4.1 主要数据结构254.4.2 主要实现算法264.5 语音回放模块实现274.5.1 主要数据结构274.5.2 主要实现算法284.6 获取本机ip地址295 软件界面及测试30总结33致谢34参考文献35前言随着移动互联网的发展,即时通信技术也得到飞速的发展。自1998年面世以来,特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。近年来,即时通信市场用户规模增长迅速,市场规模前

13、景广阔。随着互联网用户的快速增长,即时通信用户也日益增长,2004年中国即时通信用户数达7000万人,2000年达到9300万人。中国即时通信市场规模在2005年约为6200万美元,2006年达到7700万美元,到2013年将达到1.14亿美元。近些年在互联网上受欢迎的即时通信软件包括qq、msn messenger、aol instant messenger、yahoo messenger、net messenger service、icq等。在这巨大的市场份额的诱惑下,众多公司都希望在这一领域有所突破,各大门户网站也是纷纷挤入即时通信市场跑马圈地,国内的电信运营商更是虎视眈眈。基于即时通信

14、在现实生活中的广泛的运营前景和发展趋势,考虑到其在生活中的实用性以及现在市场上即时通信系统的局限性,我们考虑到很多公司的内部交流需求,所以开发了一个可以在局域网内实现实时语音通信的一个即时通信软件。语音聊天是即时通信系统的一个核心子模块,它采用现代比较流行的网络编程技术,面向各类企事业部门等局域网用户,利用即时通信协议以及相关技术实现局域网内实时语音聊天,方便内部人员进行实时交流,共同解决工作生活中遇到的困难,为企业以及其他的局域网用户带来方便。像传统的一些诸如飞鸽传书之类的局域网聊天工具虽然实现了在局域网内文字聊天、文件传输等一系列功能,但在语音方面却涉足尚浅,给用户的实时交流带来了诸多影响

15、。所以本论文以现在即时通信在现实生活中大量应用为发展契机,实现了局域网内实时语音聊天,以期望给人们的生活、工作、学习带来更大的便利。1 ip语音通信技术设计概述1.1 ip语音通信的发展历史即时通信是指能够即时发送和接收互联网消息等的业务的总称。自上个世纪八十年代面世以来,加上近几年的快速发展,即时通信的功能日趋丰富,集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的语音聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化的信息平台。随着移动互联网的快速发展,互联网即时通信也在移动化扩张。现阶段,微软、aol、yahoo

16、等重要即时通信提供商都能提供通过手机接入互联网的即时通信业务,用户完全可以通过手机与其他已经安装了相应客户端软件的手机或计算机交流消息。在2006年6月,中国移动通信就已经推出了自己的即时通信工具fetion,不久后中国联通也推出了即时通信工具“超信”,虽然由于进入市场较晚,其用户规模和品牌知名度还比不上原有的即时通信服务提供商,但其市场发展前景仍然十分乐观,这也是目前即时通信的焰火持续燃烧的原因之一。1.1.1目前国内外ip语音的研究概况为什么ip语音的发展会如此迅速?这除了归因于高速带宽技术的重大突破之外,另一个重要原因是互联网电话通话费相对低廉,同时保证一定的语音质量。实质上这说明互联网

17、网络利用率和自愈恢复能力要比电路交换网强,除此外,互联网电话可以:1.以近乎无限的方式,轻松实现系统扩容。除了通过网络扩容,还可按需要,通过给ip语音网关添加额外的端口实现。2.通过标准计算机轻松处理数据格式的语音数据。分段传送电话,保存或转发被叫端的应答信息或语音邮件。3.通过软件来实现基于ip的pbx功能。这意味着无需很大开支就能实现其他附加功能,如电话会议、转发和录音电话。4.用标准pc组件来设计并部署基于pc的pbx,比传统方式有更大的价格优势。1.1.2 ip语音技术的发展趋势目前即时通信行业仍处于高速发展期,通过调查发现,即时通信在未来的发展中呈现出整合多种业务、扩张移动平台、渗透

18、企业用户、融入收费内容的发展趋势。1.整合多种业务随着宽度的普及,即时通信的内涵也开始变化。与过去的纯文本交流不同,新型即时通信业务融合了视频、音频交流等应用元素。目前各种即时通信除提供了基本的即时互动交流外,还能提供视频、语音通信服务,在短信收发、文件共享、数据传输、游戏、娱乐、个性化设置等方面也都有大的开拓和创新。总之,多媒体化是即时通信未来的发展方向,未来即时通信将捆绑更大的互联网和电信增值业务功能。以腾讯qq为例,它目前正在大力发展游戏、音乐、用户定制等业务,今后还可能推出新的通信录、博客服务、视频音频等服务。同时,qq.com已经是发展成熟的内容网站,现在访问量已经名列前茅,它会和q

19、q客户端形成一纵一横互相支持的业务模式。2.扩张移动平台实体移动通信业务的迅速发展使得传统的互联网即时通信服务商将移动用户作为下一个市场发展的重点,这在移动增值服务成为即时通信服务商收入的主要来源之后尤为突出。即时通信业务承载的设备也趋于多样化,用户通过pc、手机、pda以及其他设备等都可以使用即时通信。msn和国内的手机厂商如:多普达、联想等合作,推出自带即时通信业务的手机,腾讯qq也推出移动qq的即时通信服务。3.渗透企业用户即时通信从个人通信向企业综合发展是其发展史上的重要一步。随着企业信息化建设步伐的加快,企业即时通信工具(eim)也将作为联想和沟通方式被有针对地应用在企业的日常生产中

20、,作为企业内外沟通方式之一。企业即时通信应用包括综合信息服务、内部即时通信、在线客户支持服务、在线呼叫、在线广告等。4.融入收费内容在互联网这个以免费、自由、互通为生存法则的世界里,即时通信从一个免费聊天工具不断生长壮大,吸引聚集了一些忠诚用户。在此基础上,开始搭建网络广告、无线增值等一系列各种潜在的交易平台,增加了收费的内容。未来即时通信行业的盈利点在互联网增值业务、移动及固网增值业务、广告业务三个方面。其中,互联网及增值业务包括两部分,核心业务主要是即时通信服务,包括传输文本信息、图像、视频、音频以及会员服务、号码服务、电子邮件等;另外还有娱乐资讯门户的建设,包括向用户提供新闻、体育、娱乐

21、等多类资讯,还包括游戏中心、交友中心、校友录、电子贺卡等多种娱乐服务。而移动及固网增值业务则主要是短信互通和部分2.5g产品,如彩信、彩铃下载和自写短信、短信订阅、新闻等多种服务。也就是说,当用户通过手机短信与即时通信软件上的好友聊天,下载或订阅短信、彩信等产品时,通过电信运营商的平台付费,电信运营商收到费用之后再与sp结算分成。1.2 ip语音技术的市场前景伴随着互联网络覆盖范围的不断扩大和使用领域的逐步拓展,基于互联网络的ip语音通信呈现出一派生机蓬勃的景象。2003年,互联网电话业务占国际长话市场的36%,互联网电话已经开始对传统大型的电话公司构成重大市场份额的威胁。据一份行业分析公司i

22、dc在2007年发布的报告,在2007年一年的时间里,voip设备市场总额就已达到151亿美元,年复合增长率达到27.2%。而据frost&sullivan关于ip语音的市场数据显示,自2001以来,通过批发和零售方式销售的分组语音通话时间长达60至150亿分钟。该行业机构同时指出,互联网电话必将取代传统电话交换系统,话音质量最终也可以与传统话音质量相媲美,甚至更好。在亚洲,日本互联网电话业务发展相当迅速,yahoo bb的业务模式受到全球青睐。中国在互联网电话网络规模和流量方面也渐趋全球前茅,同时中国政府和企业对互联网电话的重视程度逐步增高。目前我国各大电信运营商都已开通了互联网电话服务,并

23、推动ip语音服务向规模化集成化的方向发展,这对于电信运营商及众多设备厂商来说,无疑是一个巨大的市场良机。1.3 ip语音通信的未来ip语音通信是新一代技术,它正改变着企业的通信方式,同时也重塑着它们的业务格局。通过语音和数据网络的融合,ip语音通信使所有类型的通信业务(包括音频、视频和数据以及无线和有线语音业务)都可以在一套ip网络上传输。因此,用户可以增强移动性并提高工作效率,因为他们可以通过多种工具获得更全面的特性和功能,这些工具包括电话、pc机、个人数字助理(pda)和移动电话。此外,企业还可以不断接受各种新的商业通信应用。ip语音通信有时被等同于ip语音通话(voip),其实二者之间存

24、在一些差别,但我们在平常使用中对其并不做严格区分。voip仅允许通过数字网络传输语音通话业务,例如,它可以消除与长途呼叫和国际呼叫相关的费用,从而节省电话费用。ip语音通信采用voip技术,但它不仅仅限于voip,因为它可以将新的语音应用和业务功能引入融合网络之中。ip语音通信还可以提供一个协作框架来支持语音和数据通信应用的无缝共存,从而使用户可以充分利用融合网络,享受语音和数据的双重功能。ip语音通信是一种专为当今要求苛刻且瞬息万变的商业环境度身定制的通信技术。它的主要优点(即:移动性、节约成本、高效率和业务连续性)迎合了员工的需求,这样是目前企业和机构争相部署ip语音通信的主要原因。ip语

25、音通信可以实现虚拟工作空间,从而为员工提供更高的移动性。不管是在家中还是在路上,员工可以从任何地方通过电话、笔记本电脑、pda或他们选择的任何设备拨打或接听电话。销售经理们可以将他们的办公室电话转移到自己的笔记本电脑或手机上,从而确保不会错过任何一个客户来电或销售线索。节约成本是ip语音通信的另一个关键优势。它可以无缝集成多个分支机构,提供更强大的通信功能,进一步密切不同地区员工之间的互动,同时降低投资成本。此外,通过将您的语音网络和数据网络融合成一套紧凑的网络,系统的综合管理将由于实现单点管理而得到简化,移动、添加、和修改系统的成本也随之减少。对企业和机构而言,业务连续性变得日益重要。ip语

26、音通信提供了一种经济高效的方法来确保企业在最需要时其多站点网络中的商务通信可正常进行,即使在某个主要站点或广域网(wan)发生故障时也是如此。提供卓越的客户服务是企业成功的关键。对大多数企业而言,以多种方式(包括现场电话交谈、网上互动和电子邮件)很好地与客户沟通已经成为或即将成为留住客户和反复赢得商机的关键所在。基于ip的呼叫中心可使企业以全新的方式与客户通信,同时尽享降低基础设施成本所带来的优势。它可使企业轻松、有效地利用整个企业的资源来更好地为客户服务。ip语音通信虽然有上述种种优势,许多公司这几年一直迟迟不愿采用它,因为他们对ip语音通信网络的质量和可靠性缺乏信心。然而,实际上ip网络的

27、性能已得到了大幅的改进,现在可以提供与传统高性能电话系统不相上下的服务质量。正是由于这一原因,全球范围内越来越多的公司开始部署可以支持ip语音通信的融合网络。ip语音通信使实现新一代通信网络过程中迈出的一大步,因为它可以消除不同系统、软件和服务间的界限,为在企业内部以及企业与客户之间实现更加灵活、有效的通信打开一扇大门。2 visualc+网络编程技术分析2.1 mfc开发技术2.1.1 mfc特点mfc是微软提供的,用于在c+环境下编写应用程序的一个框架和引擎,vc+是windows下开发人员使用的专业c+ sdk(sdk,standard software develop kit,专业软件

28、开发平台),mfc就是挂在它之上的一个辅助软件开发包,mfc是为与vc+血肉相连的一部分。 mfc是win api与c+的结合,api,即微软提供的windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对windows下应用程序的开发,使这些被开发出来的应用程序能在windows下运行,比如vb,vc+,java,delhpi编程语言函数其本质上全部源于api,因此用它们开发出来的应用程序都能工作在windows的消息机制和绘图里,mfc是微软对api函数的专用c+封装,这种结合一方面让用户使用微软的专业c+

29、sdk来进行windows下应用程序的开发变得容易,因为mfc是对api的封装,微软做了大量的工作,隐藏了好多程序开发人员在windows下用c+ & mfc编制软件时的大量细节。mfc不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在windows(用mfc编写的程序绝大部分都在windows中运行)中实现内部处理的类,如数据库的管理类等。2.1.2 mfc的优势mfc是微软封装了的api。windows作为一个提供功能强大的应用程序

30、接口编程的操作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数api)对于程序员来说非常的困难,因为,api函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。mfc是面向对象程序设计与application framework的完美结合,他将传统的api进行了分类封装,并且创建了程序的一般框架, 随着编程语言的推陈出新,mfc一些缺点日益突出。最重要的就是入门门槛相对其他语言要高,而且同样完成一个任务代码量相对较多。而原有的优势如运行速度快等,也因为其他编程语言的日臻完善和个人电脑的运算速度增加而显得不那么突出。 2.1.3 mfc的文档视图

31、的概念文档是给予应用程序中与用户交互的数据集合的名称。虽然单词“文档”似乎意味着某种文本的本质,但文档决不仅仅限于文档。文档实际上可以是游戏数据、几何模型、文本文件。术语文档只是一种方便的标签,表示作为整体对待的应用程序中的应用数据。程序中的文档是作为文档类的对象定义的,文档类是从mfc库中的cdocument类派生的,需要添加数据成员来存储应用程序需要的数据,还要添加成员函数来支持对数据的处理。应用程序不仅仅限于单文档类型,当应用程序中涉及若干不同种类的文档时,可以定义多个文档类。整体视图总是与特定的文档对象相关。文档包含程序中的一组应用程序,而视图对象可以提供一种机制来显示文档中存储的部分

32、或全部数据。视图定义了在窗口中显示数据的方式以及与用户的交互的方式。文档对象可以拥有任意多个与其相关的视图对象。各个视图对象可以提供文档数据或文档数据子集的不同表示方法。2.2网络编程技术2.2.1 套接字技术简介套接字(socket),是支持tcp/ip的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程以区分不同应用程序进程间的网络通信和连接,套接字主要包括3个参数:通信的目的ip地址、使用的传输层协议(tcp或udp)和使用的端口号。socket原意是 “插座”。通过将这3个参数结合起来,与一个“插

33、座”socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给socket的数据,由socket交网络驱动程序向网络上发送出去。计算机从网络上收到与该socket绑定ip地址和端口号相关的数据后,由网络驱动程序交给socket,应用程序便可从该socket中提取接收到得数据,网络应用程序就是这样通过socket进行数据的发送与接收的。2.2.2 套接字通信过程通过i

34、nternet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为clientsocket,另一个运行于服务器端面,称为serversocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。连接确认是当服务器端套接字监听到或者说接收

35、到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。使用套接字进行数据处理有两种基本模式:同步和异步。 1同步模式: 同步模式的特点是在通过socket进行连接、接收、发送数据时,客户机和服务器在接收到对方响应前会处于阻塞状态,即一直等到收到对方请求时才继续执行下面的语句。可见,同步模式只适用于数据处理不太多的场合。当程序执行的任务很多时,长时间的等待可能会让用户无法忍受。 2异步模式: 异步模式的特点是在通过socket进行连接、接收、发送

36、操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收、发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。可见,异步套接字特别适用于进行大量数据处理的场合。 2.3多线程编程技术2.3.1多线程技术cpu生产商为了提高cpu的性能,通常做法是提高cpu的时钟频率和增加缓存容量。不过由于目前cpu的频率越来越快,如果再通过提升cpu频率和增加缓存的方法来提高性能,往往会受到制造工艺上的限制以及成本过高的制约。 尽管提高cpu的时钟频率和增加缓存容量后的确可以改善性能,但这样的cpu性能提高在技术上存在较大的难度。实际上在应用中基于很多原因,c

37、pu的执行单元都没有被充分使用。如果cpu不能正常读取数据(总线/内存的瓶颈),其执行单元利用率会明显下降。另外就是目前大多数执行线程缺乏ilp(instruction-level parallelism,多种指令同时执行)支持。这些都造成了目前cpu的性能没有得到全部的发挥。因此,intel采用另一个思路去提高cpu的性能,让cpu可以同时执行多重线程,就能够让cpu发挥更大效率,即所谓“超线程(hyper-threading,简称“ht”)技术”。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了cp

38、u的闲置时间,提高了cpu的运行效率。以上就是多线程技术的设计初衷。2.3.2 win32环境下多线程编程技术windows系统平台经历了从16位到32位的转变后,系统运行方式和任务管理方式有了很大的变化。每个win32程序在独立的进程空间上运行,32位地址空间使其在逻辑上达到了4gb的线性地址空间。这样在设计程序时大大提高了程序运行效率。独立进程空间的一个优越性是大大提高了系统的稳定性,一个应用程序的异常错误不会影响其他的应用程序。在windows的一个进程内,包含一个或多个线程。线程是指进程的一条执行路径,它包括独立的堆栈和cpu寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号

39、标识、以及动态分配的内存等等。一个进程内的所有线程使用同一个32位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程具有优先级别,优先权较低的线程必须等到优先权高的线程执行完任务后再执行。在多处理器的机器上,调度程序可将多个线程放到不同的处理器上去运行,这样就可使处理器的任务平衡,也提高了系统的运行效率。如果用户的应用程序需要有多个任务同时进行相应的处理,则使用多线程是较理想的选择。win32方式的多线程编程的原理与mfc类库支持下的原理是一致的,进程的主线程在任何需要的时候都可以创建新的线程。当线程执行完任务后,自动中止线程;当进程结束后,所有

40、的线程都中止。在多线程编程模式下,所有活动的线程共享进程的资源。因此,在编程时需要考虑多个线程访问同一资源时产生冲突的问题:当一个线程正在访问一个进程对象时,另一个线程要改变该对象,这时可能会产生错误的结果。2.3.3 mfc环境下多线程编程技术mfc多线程编程基本原理与win32函数的设计是一致的,不过由于mfc对同步对象做了封装,因此对用户编程实现来说更加方便,避免了对象句柄管理上的繁琐工作。尤其是在多个窗口线程情况下,mfc中直接提供了用户接口线程的设计。在mfc中,线程分为两种:用户接口线程和辅助线程。用户接口线程常用于接收用户的输入,处理相应的事件和消息。在用户接口线程中,包含一个消

41、息处理循环,负责处理用户输入产生的事件和消息。win32api并不区分这两种线程的类型,它只是获取线程的起始地址,然后开始执行线程。而mfc则针对不同的用户的需要作出了分类。如果我们需要编写多个有用户接口的线程的应用程序,则利用win32api要写很多的框架代码来完成每个线程的消息事件的处理,而用mfc则可以充分发挥mfc类中的强大功能,还可以使用classwizard来帮助管理类的消息映射和成员变量。2.3.4线程同步技术在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结

42、果的了解应当在其处理任务完成后进行。 如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就很有可能得到有关处理结果的错误了解。例如,多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题。如果一个线程负责改变此变量的值,而其他线程负责同时读取变量内容,则不能保证读取到的数据是经过写线程修改后的。 为了确保读线程读取到的是经过修改的变量,就必须在向变量写入数据时禁止其他线程对其的任何访问,直至赋值过程结束后再解除对其他线程的访问限制。像这种保证线程能了解其他线程任务处理结束后的处理结果而采取的保护措施即为线程同步。 线程同步是一个非常大的话题,包括方方面面的内

43、容。从大的方面讲,线程的同步可分用户模式的线程同步和内核对象的线程同步两大类。用户模式中线程的同步方法主要有原子访问和临界区等方法。其特点是同步速度特别快,适合于对线程运行速度有严格要求的场合。 内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成。由于这种同步机制使用了内核对象,使用时必须将线程从用户模式切换到内核模式,而这种转换一般要耗费近千个cpu周期,因此同步速度较慢,但在适用性上却要远优于用户模式的线程同步方式。临界区(critical section)是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界

44、区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。 临界区在使用时以critical_section结构对象保护共享资源,并分别用entercriticalsection()和leavecriticalsection()函数去标识和释放一个临界区。所用到的critical_section结构对象必须经过initializecriticalsection()的初始化后才能使用,而且必须确保所有线程中的任何试图访问此共享资源的代码都处在此临界区的保护之下。否则临界区将不

45、会起到应有的作用,共享资源依然有被破坏的可能。信号量(semaphore)内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。一般是将当前可用资源计数设置为最大资源计数,每增加一个线程对共享资源的访问,当前可用资源计数就会减1,只要当前可用资源计数是大于0的,就可以发出信号量信号。但是当前可用计数减小到0时则说明当前占用资源的线程数已经达到了所允许的最大数目,不能再允许其他线程的进入,此时的信号量信号将无法发出。线程在处理完共享资源后,应在离开的同时通过releasesemaphore()函数将当前可用资源计数加1。

46、在任何时候当前可用资源计数决不可能大于最大资源计数。3 ip语音通信开发协议及需求分析语音实时通信涉及到很多方面的技术,在开发的过程中受到诸多方面的制约,在本系统的实现过程中主要运用的通信协议有ip协议和udp协议。3.1 ip协议3.1.1 ip协议简介ip是英文internet protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 ip协议就可以与因特网互连互通。ip地址具有唯一

47、性,根据用户性质的不同,可以分为五类。3.1.2 ip协议基本原理各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。ip协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成nnt流量或者“ip数据包”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点那么,“数据包(packet)” 是什么?它又有什么特点呢?数据包也是分组交换的一种形式,就是把所传送的数据分段打成 “包”,再传送出去。但是,与传统的“连接型”分组交换

48、不同,它属于“无连接型”,是把打成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据包”。这样,在开始通信之前就不需要先连接好一条电路,各个数据包不一定都通过同一条路径传输,所以叫做“无连接型”。这一特点非常重要,它大大提高了网络的坚固性和安全性。 3.1.3 ip地址ip协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“ip 地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。现在电信网正在与 ip网走向融合,以ip为基础的新技术是热门的技术,如用ip网

49、络传送话音的技术(即voip)就很热门,其它如ip over atm、ipover sdh、ip over wdm等等,都是ip技术的研究重点。所谓ip地址就是给每个连接在internet上的主机分配的一个32bit地址。ip地址就好象电话号码,有了某人的电话号码,你就能与他通话了。同样,有了某台主机的ip地址,你就能与这台主机通信了。 按照tcp/ip(transport control protocol/internet protocol,传输控制协议/internet协议)协议规定,ip地址用二进制来表示,每个ip地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的i

50、p地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,ip地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的ip地址可以表示为“”。ip地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。 3.2 udp协议udp是osi参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。udp 协议基本上是ip协议与上层协议的接口。udp协议适用端口分别运行在同一台设备上的多个应用程序。 数据包,是一种无连接的协议。在osi模型中,在第四层传输层,处

51、于ip协议的上一层。udp有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。udp用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用udp协议。udp协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,udp仍然不失为一项非常实用和可行的网络传输层协议。udp协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据

52、。与所熟知的tcp(传输控制协议)协议一样,udp协议直接位于ip(网际协议)协议的顶层。根据osi(开放系统互连)参考模型,udp和tcp都属于传输层协议。tcp协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。tcp提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能3.3 需求分析3.3.1 语音软件设计背景需求分析语音通讯是即时通信系统中的一个核心模块,是人们实现即时交流的重要环节,而传统的一些诸如飞秋之类的局域网聊天工具虽然实现了在局域网内文字聊天、文件传送等一系列功能,但其在语音方面却

53、涉足不深,给用户的实时交流带来诸多的影响。所以,本次毕业论文以即时通信在现实生活中大量应用为良机,实现了局域网内两台主机实时语音聊天。只要其中任意一个用户发出语音聊天的请求,对方就会接收到一个请求,若同意之后双方就可以进行随意的语音聊天了,最后点击断开键结束语音聊天。首先对语音通讯流程进行分析,流程分析是整个系统的基础,它给出了语音是怎样从一台主机捕获并发送到另一台主机的整个过程。一般语音通讯系统应该包括:建立连接,音频捕获,音频发送(包括音频压缩),音频接收,音频回放(包括音频解压)五个部分。其基本流程为:建立连接打开麦克风捕获音频音频压缩音频传送音频接收音频解压音频回放。总体流程图如下:图

54、3.1 语音通信总体流程图3.3.2 语音通信系统功能模块需求分析语音通讯系统主要是是实现在局域网内的实时语音聊天,一般来说当通信双方中的一方给对方发出语音聊天请求后,服务器进行转发最后双方建立通信连接。考虑到在实际应用中特殊性,本软件不是采用的c/s模式,因而通信双方是一种对等的关系。当在双方通信连接建立后就可以在两台计算机之间进行点对点音频数据传输。本地主机捕获音频设备中的音频数据,并经过压缩然后发送给对方,在对方接收到此音频数据之后经解压回放。具体数据流走向是:请求方发出请求直接转发到被请求方,经过被请求方对请求方提出的请求进行处理,然后将其反馈消息返回给请求方(此处假设被请求方选择了接

55、受),则请求方将得到对方的ip地址并打开自己语音设备开始进行音频捕获、压缩并发送,而被请求方在进行音频捕获的同时进行音频接收、解压与回放。所以可以得到顶层数据流图见下图:图3.2 语音通信系统数据流程图在上面数据流图中,有处理语音请求、捕获音频与发送、音频接收与回放三大处理模块,这三个处理模块的具体功能如下:1处理语音请求请求方提出的语音聊天请求,然后经过对方处理将其反馈消息转发到请求方,请求方根据对方的应答消息完成相应的动作,如下图: 图3.3 语音请求数据流程图2捕获音频与发送当请求方接收到对方“接受”语音请求的应答消息后,就会打开自己的音频设备启动音频捕获处理模块,并将捕获到的音频数据进

56、行压缩处理之后发送给对方。在发送给对方的过程中会用到处理语音请求过程中所得到的对方的ip地址。其主要步骤有:确定音频格式,建立音频捕获对象,打开录音设备,为设备分配足够的内存缓存区,将缓冲区与设备相关联,开始捕获音频,将捕获的音频压缩并发送给远程主机。图3.4 捕获音频数据流程图3音频接收与回放当被请求方收到请求方传过来的音频数据后,首先其会通过解压处理而得到最初的音频数据然后在接收方的音频设备中进行回放。其主要步骤有:确定音频格式,建立音频回放对象,打开与此主机相关的回放设备并得到其句柄,为回放设备准备一块波形缓冲区,向指定的波形输出设备发送一个数据块,停止放音,关闭回放设备。其流程图如右所示: 图3.5 音频回放数据流程图4 ip语音通信系统的实现4.1 开发平台目前开发基于网络的语音通讯系统,比较流行的几种语言包括c+、java和c#,基于几种平台和语言的比较,最终选择了visual studio 2008作为ide,选择visual c+语言来实现此语音通讯系统,选择vs

温馨提示

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

评论

0/150

提交评论