局域网的语音通信系统论文.docx

上传人:b****2 文档编号:22891639 上传时间:2023-04-28 格式:DOCX 页数:40 大小:301.85KB
下载 相关 举报
局域网的语音通信系统论文.docx_第1页
第1页 / 共40页
局域网的语音通信系统论文.docx_第2页
第2页 / 共40页
局域网的语音通信系统论文.docx_第3页
第3页 / 共40页
局域网的语音通信系统论文.docx_第4页
第4页 / 共40页
局域网的语音通信系统论文.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

局域网的语音通信系统论文.docx

《局域网的语音通信系统论文.docx》由会员分享,可在线阅读,更多相关《局域网的语音通信系统论文.docx(40页珍藏版)》请在冰豆网上搜索。

局域网的语音通信系统论文.docx

局域网的语音通信系统论文

摘要

 

本论文讨论了Windows环境下局域网语音聊天程序的设计思路和设计方法。

其中网络通信部分采用流行的TCP/IP协议。

程序采用典型的C/S(服务器/客户端)构架,用socket编程设计网络通讯。

界面设计部分采用WindowsMFC框架。

分析了服务器端应用系统软件的结构和功能,阐述了系统的实现方法和实现思路。

硬件上只需要一块双DMA通道的声卡(目前的声卡大多支持双DMA通道)和一支耳麦,其余全部由软件编程实现。

论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

重点的说明了语音通信的设计思路、难点技术和解决方案。

关键字:

局域网;语音通信;socket;C/S构架

 

Abstract

ThisarticlediscusseshowtodesignanddevelopaLANchattingprograminWindowsenvironment.NetcorrespondencepartusespopularTCP/IPagreement.TheprocedureusesthemodelC/S(server/Clientside)skeleton,programsthedesignnetworkcommunicationwithsocket.ThecontactsurfacedesignpartusesWindowstheMFCframe.Hasanalyzedtheserverendapplicationsystemsoftwarestructureandthefunction,Elaboratedthesystemrealizationmethodandtherealizationmentality.OnthehardwareonlyneedsthedoubleDMAchannelsoundcard(thepresentsoundcardmostlytosupportthedoubleDMAchannel)togetherandjournalwheat,othercompletelyprogramtherealizationbythesoftware.

Thepapermainlyintroducedthistopicdevelopmentbackground,mustcompletefunctionanddevelopmentprocess.Keyexplanationpronunciationcorrespondencedesignmentality,difficulttechnologyandsolution.

Keywords:

thelocalarea;networkpronunciationcorresponds;socketC/Sskeleton

 

目录

第1章概述…………………………………………………………………1

1.1开发环境简介1

1.2VisualC++程序设计3

1.3低层波形音频4

第2章WINDOWSSOCKET网络编程的研究……………………………8

2.1计算机网络的体系结构8

2.2TCP/IP的体系结构9

2.3客户机/服务器模式10

2.4Winsock介绍11

2.4.1Winsock的基本概念11

2.4.2Winsock的编程特点12

2.4.3Winsock基本的API13

2.4.4异步选择机制18

2.4.5winsock编程原理18

2.5系统实现的功能及设计要求21

2.5.1系统实现的功能21

2.5.2设计要求22

第3章系统分析与设计……………………………………………………23

3.1设计思想23

3.2界面设计25

3.3软件设计要点26

3.3.1客户端26

3.3.2音频数据处理的CSound类27

3.3.3主框架程序27

第4章系统的实现…………………………………………………………29

4.1连接服务器29

4.2语音处理的实现30

第5章系统运行效果及改进意见…………………………………………33

5.1系统运行结果33

5.2存在不足33

5.3未来形势33

第6章总结………………………………………………………………35

致谢…………………………………………………………………………36

参考文献………………………………………………………………………37

第1章概述

21世纪是以网络为核心的信息时代,它的主要特征就是数字化,网络化和信息化。

而在“三网”即电信网,有线电视网和计算机网络中发展最快并起到核心作用的就是计算机网络了。

计算机网络在目前主要是指按照网络协议以资源共享和互相通信为目的,将地理上分散并且独立自主的计算机互相连接的集合。

计算机和通信技术的紧密结合。

通信和计算机的结合主要指两方面:

一方面,通信为计算机之间的数据传递和交换提供了必要的手段;另一方面,数字计算技术的发展渗透到通信技术中,又提高了通信网络的各种性能。

随着技术的发展和进步,进入20世纪80年代以来,出现了一系列语音通信的软件,比如NetMeeting、IPPhone、MediaRing以及VoxPhone等等,但这些软件都功能完善、相对独立,不利于集成到自己开发的软件中,有时我们也希望将这种语音通信功能集成到自己的软件中,尤其当一个单位的局域网用户分散在不同的房间时。

网络语音通信已经发展多年,早些年由于互联网接入主要以调制解调器为主,制约了网络语音通信的发展,今天,宽带接入越来越普及,语音应用完全没有问题,已经可以给人类带来最廉价的语音通信,但是目前只能限制在点对点通信。

本设计给出一种灵活、简单的实现方法,采用基于对话框的方式编程,硬件上只需要一块双DMA通道的声卡(目前的声卡大多支持双DMA通道)和一支耳麦,其余全部由软件编程实现。

程序在Windows98/2000、VisualC++6.0下编译通过,在WindowsNT100M以太网上运行良好。

1.1开发环境简介

我们是基于以下的软件环境:

以Windows2000/xp为操作系统,以VisualC++6.0为开发工具。

Windows2000/xp是目前主流图形化操作系统,运行各种各样的Windows操作系统的个人计算机已在全球的家庭和办公环境中广泛使用,而越来越多的个人计算机具有Internet功能和多媒体功能又推动了对各种各样功能强,速度快的应用软件的进一步需求。

目前有一种对Microsoft所取得的成功进行诽谤的气氛,然而,Microsoft的成功加上它对标准化的承诺,使得有承诺的Windows编程人员利用他们掌握的技术在全球范围内得到越来越大的回报,由于西方社会的承认和计算机已越来越深入到每个人的生活中,因而对他们的技术需求与日俱增,从而使得他们的回报、经济收入和其他各方面相应地取得了满意的结果。

VisualC++6.0是Microsoft公司推出的面向对象的、功能强大的可视化软件开发工具,它将程序设计方法与可视的软件开发环境完美结合,受到众多程序设计人的员的喜爱。

使用VisualC++开发Windows应用程序重要有两种方法,一种是使用Windows提供的WindowsAPI函数;另一种是直接使用Microsoft提供的MFC类库。

VisualC++6.0不仅仅是一个编译程序,已增加了很多新的内容,它包含了Microsoft的综合基本类(FoundationClass),可简化和加速Windows程序的开发;还包括了完善的资源编辑程序,可以用来设计复杂的对话框、菜单、工具条、图象、现代Windows应用程序所需的很多其他组件等。

还有一个名为“开发工作室(DeveloperStudio)”的优秀的集成开发环境,当你开发应用程序时就可以用图形化的视图来查看该应用程序的结构。

一种完全集成化的调试工具使你立即就可以查看程序运行时各方面的细节。

这些仅仅是VisualC++6.0所拥有大量功能中的几个例子。

利用VisualC++6.0,就可以帮助你采用最新的Windows开发成果去开发快速而功能齐全的、先进的应用软件。

在VisualC++6.0中包含了大量新功能:

一些新的控件(例如,你可能在MicrosoftOutlook电子邮件应用程序中日期选择器控件)目前已能应用到你自己的应用程序中。

各种图象现在已能与组合框中的项相关联,而且可以利用扩充的组合框控件将图象显示在组合选择框中和下列列表中。

在Office97和InternetExplorer4中已使用的一般的工具条和尺寸可调节的工具条都已集成在其类库中,以供你用于你自己的应用程序中。

你可以在你自己的应用程序中使用InternetExplorer,查看Web页和HTML的内容。

使用VC++6.0 ,我们几乎可以作任何事情,还可以撰写种各种类型的应用程序,动态链接库(DLL)、CON、或CORBA对象,CGI/ISAPI程序,Microsoft Back Office应用程序。

程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次分布式系统,都可以使用VC++6.0进行开发,其友好的集成开发界面,可视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受广大程序开发人员的好评。

功能强大的AppWizard可以用来生成各种初始类型的应用程序框架,因而,即使你没有添加一行程序新的应用程序就可具有像Windows资源管理器那样的多视图应用程序的所有功能。

基于组件的编程和分布式组件对象模型(DistributedComponentObjectModalDCOM)都是现代软件开发新的主流领域。

最新版本的API和SDK例如DirectXGameSDK

1.2VisualC++程序设计

面向对象的方法学是要求按人们通常的思维方式建立问题领域的模型,设计出尽可能自然表现求解方法的软件。

所谓建立模型就是建立问题领域中事物间相互关系。

而表现求解问题的方法就是人们思维方法的描述。

在面向对象的设计方法中对象(object)和传递信息(messagepassing)分别表现事物和事物间的关系。

类(class)和继承性(inheritamce)是描述人们思维方式的描述方法。

方法(method)是在可进行的操作,这种对象、类、消息、方法的程序设计范式的关键在于对象的封装和继承性。

通过封装(emcapsulation)能将对象的定义和实现分开。

通过继承性,体现了类与类之间的关系,以及由此带来的基本特征。

下面将从面向对象的方法学方面对有关概念作简要介绍。

(1)对象

我们把面向现实世界中的实体就称为问题空间的对象从动态的观点看,对象的操作就是对象的行为,从存储的角度看,对象是计算机内存中的一块私有存储区,在这块存储区中有数据、有方法。

在面向对象的程序设计中,对象是该系统的基本运行实体,对于每个对象而言,都有与该对象对应的方法,而与每个对象相关的方法,就是定义了该对象的操作。

(2)消息和方法

在对象之间,消息是他们之间的唯一联系。

在面向对象的程序环境中设计的程序,它的执行是依靠对象向消息传递来完成的。

把所以的对象分为各种对象类,每个对象类都定义了一组方法,所谓方法就是允许在对象类上进行的各种操作。

(3)类

在面向对象的程序设计中,对象是程序设计的最基本的单位,相似的对象可以并到一类中去,程序员只需定义一个类,就可根据这个类得到若干个实例,其中每个实例就是一个对象。

(4)继承性

继承性是自动地共享类、子类、对象中的方法和数据的一种机制,继承性个减少程序设计中编写代码的工作量,它不仅支持系统的可重用性,而且还促进了系统的可扩充性。

(5)封装性

所谓封装是一种信息隐蔽技术,用户只能看到对象封装界面上的信息,而对象内部对用户透明,封装的目的是把对象的使用着和对象的设计着分开,使用着只需设计访问对象的消息。

(6)多态性

当同样的消息可发送到父类的对象和它的子类的对象时,这就被称为多太性。

由于多太性具有可表达对象的多个类的能力。

因此,它既与动态类型有关,又与静态类型有关。

(7)动态聚束

一个程序经过编译,连接生成的可执行文件代码,其过程就是将执行代码聚束在一起,若这一过程发生在程序设计时,就称为动态聚束。

面向对象语言常使用这一类聚束方式,它具有程序简单性和可扩充性等优点。

1.3低层波形音频

本系统要实现声音的播放和发送,必须要处理波形音频。

处理方法有很多,最简单的一种方法是使用PlaySound函数。

PlaySound是一个只能够播放波形音频文件的函数,本程序中主要用到的都是比较低层的波形音频API。

下面介绍相关函数。

(1)PlaySound函数

BOOLPlaySound(LPCSTRpszSound,HMODULEhmod,DWORDfdwSound);

PlaySound函数可以播放一个由文件名、资源号或者是系统事件(定义在WIN.INT或者注册表中的别名)决定的波形音频数据.

(2)WAVEHDR结构,其声明如下:

typestruct{

LPSTRlpData;//指向锁定的数据缓冲区的指针

DWORDdwBufferLength;//数据缓冲区的大小

DWORDdwByteRecorded;//录音时指明缓冲区中的数据量

DWORDdwUser;//用户数据

DWORDdwFlag;//提供缓冲区信息的标志

DWORDdwLoops;//循环播放的次数

structwavehdr_tag*lpNext;//保留

DWORDreserved;//保留

}WAVEHDR;

声音的采集和播放都是在操作这个音频数据块结构,实际上主要用到的就是第一个成员变量lpData,所以我们只要在分配缓冲区(内存)的同时相应分配WAVEHDR数据块结构,然后将缓冲区的指针赋给对应的数据块结构的成员变量lpData,这样当一个缓冲区填满后,也就是一个音频数据块填满了,通过消息机制就可以在消息函数中进行处理和播放,播放完后又可通过消息函数把缓冲区再送给音频设备输入驱动程序,继续进行采集并播放,当你一次性分配多个缓冲区和数据块结构并赋给音频设备输入驱动程序后,至于把哪个缓冲区填满,然后再把哪个空缓冲区赋给设备输入驱动程序,不需人为干预,完全由Windows控制,这就是一种用动态循环缓冲区实现话音的实时采集、播放的简单而巧妙的办法。

实现步骤:

1.初始化操作

1用waveInGetNumDevs()和waveOutGetNumDevs()查看当前系统波形音频输入、输出设备;

2按11025Hz,16Bit,单声道,22K/S的格式设置WAVEFORMATEX结构的成员变量,也可以改为其他WAVE格式;

3用waveInOpen(...)和waveOutOpen(...)分别调用WAVE_FORMAT_QUERY参数查看波形输入设备是否支持所设定的格式;

4再次用waveInOpen(...)和waveOutOpen(...)分别调用CALLBACK_WINDOW参数打开波形输入设备;

5分别给音频数据块和音频数据缓冲区分配、锁定全局内存;

6初始化音频数据块结构各成员变量,主要是将每个缓冲区指针赋给对应数据块结构中的缓冲区指针变量lpData;调用waveInPrepareHeader(...)和waveInAddBuffer(...)将音频数据块赋给输入设备驱动程序;

7⑦调用waveInStart(...)函数开始录音。

录音开始后,每当有采样数据填满数据块后,设备驱动程序就会发消息MM_WIM_DATA给用户窗口,相应的消息回调函数OnMmWimData(...)对数据块中的采样数据进行处理,然后就可以发送给输出设备进行回放,每当一个音频数据块播放完毕,设备驱动程序又会发出消息MM_WOM_DONE,相应的消息回调函数OnMmWomDone(...)记录音频数据并经必要准备后重新发送给输入设备,以准备接收后续的采样数据。

这样,最初为输入设备准备的音频数据块就在消息的控制下,在输入、输出设备间循环使用,无需人为控制实现了实时采集、处理和播放。

当结束通话时要关闭音频输入设备,这时音频设备驱动程序会发送MM_WIM_CLOSE消息,可在相应的消息函数

2.消息操作

录音开始后,每当有采样数据填满数据块后,设备驱动程序就会发消息MM_WIM_DATA给用户窗口,相应的消息回调函数OnMmWimData(...)对数据块中的采样数据进行处理,然后就可以发送给输出设备进行回放,每当一个音频数据块播放完毕,设备驱动程序又会发出消息MM_WOM_DONE,相应的消息回调函数OnMmWomDone(...)记录音频数据并经必要准备后重新发送给输入设备,以准备接收后续的采样数据。

这样,最初为输入设备准备的音频数据块就在消息的控制下,在输入、输出设备间循环使用,无需人为控制实现了实时采集、处理和播放。

当结束通话时要关闭音频输入设备,这时音频设备驱动程序会发送MM_WIM_CLOSE消息,可在相应的消息函数OnMmWimClose(..)中清除赋给输入、输出设备的音频数据块。

第2章WINDOWSSOCKET网络编程的研究

 

2.1计算机网络的体系结构

为了将庞大而复杂的计算机网络中的各种问题简化,可以将它转化为若干个较小的局部问题,而这些问题就比较容易研究和解决。

为了使不同体系结构的网络都能互连交换信息,所以人们提出将计算机在世界范围内互连成网的标准框架即计算机网络的体系结构,其中以ISO(国际标准化组织)的OSI(开放系统互连)和TCP/IP标准最为流行。

OSI共分7层,由底向高分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。

而TCP/IP共有四层。

由底向高分别是网络接口层,网际层,运输层和应用层。

两种体系的结构对比图2-1所示,OSI各层的作用和标准如表1。

7应用层

6表示层

5会话层

4运输层

3网络层

2数据链路层

1物理层

应用层

(各种应用层协议如:

TELNET,

FTP,SMTP等)

传输层TCP,UDP

网际层IP

网络接口层

 

图2-1TCP/IP与OSI体系结构的对比

表2-1OSI各层的作用和标准

OSI层次

作用

标准/协议

物理层

为数据链路层屏蔽掉各种媒体的差异,

规定计算机与煤体接口的标准

RS232,RS449

数据链路层

数据链路的建立、维护和释放:

将物理层提供的比特流分制成帧,并进行差错控制和流量控制

HDLC,PPP,ARQ

网络层

确定从源端到目的端如何选择路径,路由选择

IPX,分组交换协议,IP

运输层

从会话层接收数据,在必要的时候把它们分成较小的单元,传递给网络层,保证到达对方时准确无误

TCP,UDP

会话层

提供除了传输层的普通数据传送外,还提供一些增强服务。

管理对话控制,同步。

FTP,SMTP,TELNET

表示层

关心所传送的信息的语法和语义,数字压缩,加密技术。

应用层

为用户提供常见的应用进程协议标准,文件传输,电子邮件,远程登陆等

2.2TCP/IP的体系结构

在Internet所使用的各种协议中,最重要的和最著名的就是两个协议,即传输控制协议TCP和网际协议IP。

人们常提到的TCP/IP并不一定是指TCP和IP这两个具体的协议,而是表示Internet所使用的体系结构或是整个TCP/IP协议族。

在TCP/IP体系中共有四个层次,没有对物理层和数据链路层做出规定,而只是将最底层取名为网络接口层。

若再不考虑没多少内容的网络接口层,那么TCP/IP体系实际上只有三个层次:

应用层,运输层和网际层。

TCP/IP的最高层是应用层。

在这层中包括了远程登陆协议TELNET,文件传送协议FTP,另一种是无连接的用户数据报协议UDP。

TCP/IP网际层的主要协议就是无连接的网际协议IP。

与网际协议IP配合使用的还有三个协议:

Internet控制报文协议ICMP、地址解析协议ARP和逆地址解析协议ARP。

在网络编程中,掌握端口的概念十分重要。

端口:

基于TCP/IP协议的网络中,计算机都分配有一个IP地址,用一个32位二进制数来表示,正式的称呼是“Ipv4地址”。

客户机需要通过TCP或UDP和服务器通信时,必须指定服务器的IP地址和服务端口号。

另外,服务器打算侦听接入客户机请求时,也必须指定图1.2一个IP地址和一个端口号。

在选择端口时,应特别小心,因为有些可用端口号是为“已知的”(即固定的)服务保留的,如文件传输协议和超文本传输协议,即FTP(21号端口)和HTTP(一般为8080端口)。

“已知的协议”,即固定协议,采用的端口由“互联网编号分配认证(IANA)”控制和分配,RFC1700中说明的编号。

从本质上说,端口号可分成3类:

“已知”端口、已注册端口、动态和(或)私用端口。

⑴“已知”端口0~1023,由IANA控制,是在UNIX中为固定服务保留的。

⑵已注册的端口1024~49151,由IANA列出来的,供普通用户的普通用户进程或程序使用。

⑶动态和(或)私用端口49152~65535。

普通用户应用应选择1024~49151之间的已注册端口,从而避免端口号已被另一个应用或系统服务所用。

此外,49152~65535间的端口可自由使用,因为IANA这些端口上没有注册服务。

2.3客户机/服务器模式

在客户机/服务器网络中(以下简称C/S结构),有一台或多台高性能的计算机专门为其他计算机提供服务,这类计算机称为服务器;而其他与之相连的用户计算机通过向服务器发出请求可获得相关服务,这类计算机称为客户机。

C/S结构是最常用、最重要的一种网络类型。

在这种网络中,多台客户机可以共享服务器提供的各种资源,可以实现有效的用户安全管理及用户数据管理,网络的安全性容易得到保证,计算机的权限、优先级易于控制,监控容易实现,网络管理能够规范化。

但由于绝大多数操作都需通过服务器来进行,因而存在工作效率低、客户机上的资源无法实现直接共享等缺点。

C/S结构的网络性能在很大程度上取决于服务器的性能和客户机的数量。

服务器是一台速度快、存储容量大的计算机,可分为文件服务器、远程访问服务器、数据库服务器、打印服务器等。

需要指出的是,在一些小型局域网中,一台服务器机上可以同时运行多个服务器软件,也就是说,它们可以向网络上的客户提供多种不同的服务,如邮件服务、FTP服务等。

服务器需要专门的技术人员对其进行管理和维护,以保证整个网络的正常运行。

随着Internet技术的发展与应用,出现了一种对C/S结构的改进结构,即浏览器/服务器结构(Browser/Server,B/S)。

在这种结构中,用户的操作可完全通过WWW浏览器实现。

2.4Winsock介绍

2.4.1Winsock的基本概念

Windows下网络编程的规范-WindowsSockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。

从1991年的1.0版到1995年的2.0.8版,经过不断完善并在Int

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1