收藏 分销(赏)

基于社区网络的ip电话系统分析与设计本科论文.doc

上传人:可**** 文档编号:3035352 上传时间:2024-06-13 格式:DOC 页数:48 大小:256.01KB 下载积分:10 金币
下载 相关 举报
基于社区网络的ip电话系统分析与设计本科论文.doc_第1页
第1页 / 共48页
基于社区网络的ip电话系统分析与设计本科论文.doc_第2页
第2页 / 共48页


点击查看更多>>
资源描述
SelectionParagraphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPointselectionParagraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesTSelectionParbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbagraphFoLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPointse11111111111111111111111111111111lectionParagraphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPoctionParagraphFormatLineSpaci2222222222222222222222ngLinesToPoints2SelectionParagraphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPointselectionParagraphFccccccccccccccccccccccccccccccccccccccccccccccccccccccccormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPoctionParagraSelec 学 位 论 文 基于社区网络的IP电话系统分析与设计 XXX 指导教师姓名 XXXX 申请学位级别 学 士 专业名称 信息管理与信息系统 论文提交日期 XXXX年X月 论文答辩日期 XXXX年X月 学位授予单位和日期 XXXXXXXXXXX 答辩委员会主任 评阅人 XXXX年X月X日 42 SelectionParagraphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPointselectionParagraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesTSelectionParbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbagraphFoLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPointse11111111111111111111111111111111lectionParagraphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPoctionParagraphFormatLineSpaci2222222222222222222222ngLinesToPoints2SelectionParagraphFormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPointselectionParagraphFccccccccccccccccccccccccccccccccccccccccccccccccccccccccormatLineSpacingLinesToPointsSelectionParagraphFormatLineSpacingLinesToPoctionParagraSelec 摘 要 本文以对VOIP技术的研究为出发点, 首先概述了IP电话的实现原理及特征,在分析IP电话的几种应用模式基础上,结合东莞茂祥电子厂的IP电话项目,根据社区网络环境的特点,创新地提出了一种基于分布式对等体系结构的IP电话解决方案,并对系统进行详细的分析与设计,通过低级的音频函数控制硬件,采用UDP协议实现语音传输,运用多缓冲技术保证数据传输的连续和完整,使用多线程控制各模块同步,实现了一个具有文字短信、文件传输、语音通信等功能的IP电话系统。 关键词:IP电话,TCP/IP协议 Abstract In this study, research in VOIP first, and then described the realizes principle of IP and characteristic. After analyzed some applied mode of the IP telephone, according to the environmental characteristics in the network in community,innovately put forward a IP telephone solution,which is distributed and equality,combined with Unisen.And proceed the detailed analysis to the system and design, passed the low functions for controling hardware, adopted UDP protocol to implement the speech delivers, used multi-buffer technique to ensure the consecution and complete of the voice data ,made multi-threading to control each mold.Implemented a IP system with short letter, document Transfer, speech correspondence etc. Keyword:IP phone, TCP/IP protocol 目录 摘 要 I ABSTRACT II 第一章 引言 1 第二章 IP电话开发综述 2 2.1 IP电话的应用现状 2 2.2 基本通信原理 2 第三章 IP电话系统分析 6 3.1 目标分析 6 3.2 需求分析 6 3.3 数据流程图 7 第四章 系统设计 8 4.1 系统功能模块图 8 4.2 功能的说明 9 第五章 程序编码与实现 10 5.1 启动系统的程序设计 10 5.1.1 托盘程序的建立 10 5.1.2 监视系统的建立 11 5.2 语音系统的实现 13 5.2.1 接口设计 13 5.2.2 录音、放音的实现 13 5.2.2 传输系统的实现 14 5.3 界面、逻辑功能设计与实现 15 5.3.1 界面设计 15 5.3.2 逻辑功能编码实现 16 第六章 系统测试和评价 25 6.1 测试过程 25 6.2 效果评价 25 6.3 系统应用与完善 26 致 谢 27 参考文献 28 第一章 引言 如果说Internet技术是信息时代的一个主要特征,那么,网络电话(IP电话)的兴起则是这项具有时代气息的新技术的一个新应用了。在五十年代,当核电站兴起时,有人预言电力将便宜得象空气一样几乎不花钱。九十年代,随着IP电话的产生,于是又有人说电话可能将免费,正如现在人们使用的e-mail一样。把国际长途帐单降到零,打长途收市内电话费,这些是IP电话常奏的市场进行曲。近几年来,IP电话以极大的价格征服力冲击着全球市场的各个角落。今天,IP电话已由网友们的“宠物”,成为Internet纵深发展的下一波,IP电话已不仅仅可以在PC之间进行,而且能够在传统的电话之间发生,而这,也正是IP电话真正具有诱人的亮点[1]!然而,由于IP电话的语音质量一直难以与传统的电话语音媲美,存在语音失真相对较大,声音延时比较长等弱点,尽管如此,随着Internet/Intranet应用的不断拓深,一种在计算机之间进行语音通信的IP电话早已在不知不觉中悄然兴起。 研究基于社区网络环境的IP电话的应用,通过社区网络架设IP电话,可以使用户免费拨打网络内部的电话,也可以支付一点点费用拨打任意的普通电话,如今已成为Internet/Intranet的新的应用热点。 第二章 IP电话开发综述 2.1 IP电话的应用现状 人们关注的IP电话经过热热闹闹的商家、学者、政府、消费者的争论、研讨,已经在世界范围内轰轰烈烈的开展了。在我国,l999年4月信息产业部正式批准IP电话试运营,中国电信IP电话试验在l4个城市开通,中国联通公司、吉通公司在12个城市开通IP电话, 虽然目前我国只有几家基础电信运营商经营IP业务,但其各地的省级分公司都独立发行IP卡,因此在这个增值业务市场中的实际市场参与主体是一百多家电信企业。与此同时,为了规范IP电话的发展,信息产业部正式颁布了《IP电话/传真业务总体技术要求》、《IP电话网关设备技术要求》和《IP电话网关设备互通技术规范》等,当然,其余的IP电话标准也正在制定之中[2]。在国外开通IP电话的有美国、加拿大等16个国家,现在,IP电话已经覆盖了整个美洲、欧盟,韩国、日本已经全面开放,台湾地区正在推广。随着IP电话的发展,国际电信联盟已经在制定IP电话的相应标准。IP电话不仅仅是为用户节省了金钱,同时为语音、数据和图像信息集成开辟了道路。 目前,全球IP电话的发展已日渐成熟,从现实情况来看,在电信数据业务中,IP业务已占95%以上,可以说数据承载网业务已基本IP化。近来视讯业务有很好的发展趋势,绝大部分也是IP业务。可以看出,目前电信网中的业务除了传统电话业务外都是IP业务,其实,电话业务中的长途电话70%已是IP电话。网络的宽带化、IP化已成为整个电信网发展的必然趋势。在可见的未来,IP电话将逐步取代传统电话并最终完全IP化[3]。 2.2 基本通信原理 信息产业部2003年发布的《电信业务目录》中,对IP电话业务作出了明确界定:IP电话泛指利用IP网络协议,通过IP网络提供或通过电话网络和IP网络共同提供的电话业务。从这个界定出发,IP电话一般可以分为如下几种通信模式[4]: 第一类,通过传统电话网(如PSTN)和IP网络(如Internet或者Intranet)共同完成通信,在此,我把它们称为普通电话到普通电话之间的通信模式(Phone to Phone),如图2-1所示。这种IP电话的模式主要表现为普通电话(图中的Phone)到普通电话之间的通话,与传统的电话通信原理表面看起来差不多,多出来的是为了连接传统电话与Internet/Intranet网络的网关设备。就IP电话来说,这是他最具有诱惑力的一种通信模式,用户在使用上非常方便,与他们使用早已经习惯了的普通电话没有区别,但是这种表面的没有区别,不代表实际没有区别,首先就是信号传输的改变,在传统的电话网络中,电话信号传到本地的PSTN之后,就会通过传统电话线路传到通话对方的本地PSTN网络,再由PSTN完成信号的分发,从而完成通话,这样的一个缺点就是PSTN与PSTN网络之间数据传输的占用带宽大,其次,就是因为通话费用高,这在长途尤其是国际长途上体现更是明显,而在这种IP的通话模式下,因为中间的传输媒介已经转换到基于路由器/分组交换的IP(Internet/Intranet)数据网进行传输[5][6],由于Internet中采用“存储一转发”的方式传递数据包,并不独占电路,并且对语音信号进行了很大的压缩处理,因此IP电话占用带宽仅为8kbit/S-10kbit/S,再加上分组交换的计费方式与距离的远近无关,自然大大节省了长途通信费用,所以,用户当然很乐意接受了,用户乐意接受的往往意味着有市场,这时商家乐意接受的,于是,这种IP电话也就散发出了它的真正有人之处了。就目前的整个IP电话市场来看,无论国内还是国外,无论技术成熟与否,这种电话正如雨后春笋般地兴起。 图2-1 Phone to Phone 通信模式 第二类,这是Phone to Phone通信模式的一种演化形式,在呼叫的一端可以没有进行网络连接的网关,呼叫放直接通过计算机网络来呼叫对方的IP电话,称之为计算机与普通电话之间的通信(PC to Phone),如图2-2所示。这种通信模式的典型应用就是Web网络电话,如中国网通就提供这种网页电话服务,使用者只要持有他们的IP电话卡,就可以登录到他们的网页,输入电话卡用户号和密码就可以进行拨打电话,使用他们的Web电话可以拨打世界大部分国家和地区。当然,提供这种服务的除了中国网通,还有美国的Net2Phone、Dialpad等等许多网络电话系统。使用这种电话的好处就是方便,不管在什么地方,只要可以上网,就可以随意拨打你想拨打的电话,前提当然是那个地方已经开通了这项IP电话业务了。 图2-2 PC to Phone 通信模式 第三类,不与传统电话网络发生关系,通过计算机网络直接完成通信过程,在这里,我将这种通信模式称为PC到PC的通话模式(PC to PC),如图2-3所示。这种IP电话在网络上早已经流行了,甚至有点泛滥,只要是上网聊过天的人,大概都会使用到这种被他们叫着“语音聊天”的IP通话了,比如说ICQ、QQ、MSN、NetMeeting、网易popo、雅虎通等等,只要是网络上的实时聊天软件,现在基本上都会有这种简单适用的“IP电话”功能。这种IP电话的最大好处就是完全建立在Internet/Intranet上,不需要任何额外的电话实施就可以完成电话通信。既可以在同一个社区网络内部通过LAN完成通话,也可以通过Internet与远方的朋友进行“语音聊天”。 图2-3 PC to PC 通信模式 虽然上面将IP电话的应用模式作了简单的划分,但是这并不是说他们就是相互独立,毫无关系的,事实上,这些模式是完全可以集成到一个完整的IP电话解决方案中的,如图2-4就是我所工作的单位的提出的一个完整地IP电话解决方案,柔和了以上所说的几种应用模式。 图2-4 IP电话完全解决方案 第三章 IP电话系统分析 系统分析是应用系统思想和方法,把复杂的对象分解成简单的组成部分,找出这些部分的基本属性和彼此间的关系[7][8][9],在本文中将分析并实现一个基于社区网络环境的PC to PC模式的IP电话系统。 3.1 目标分析 因为本文研究的是基于社区网络环境的IP电话系统,对于社区网络环境来说,既可能是通过Internet进行连接的,但是更多的则会是LAN网络环境,所以,用户可能根本就不需要上网,只要借助于局域网就可以完成通信,局域网的好处就是传输稳定,速度快,话音质量相对于经过Internet进行传输的要好,除此之外就是因为不需要上Internet,可以不花钱,实现真正的免费电话。当然,如果需要与远方朋友进行通话,可以有更多的选择了,对方也可以安装一个IP电话,然后就可以通过Internet进行趣味无穷的“语音聊天”了,但是,如果需要拨打普通的电话,毕竟世界上没有免费的午餐,自然还是需要网络运营商提供支持了,不过这些不在本文的研究范围内,所以不去详细的探讨了。 很明显的一点就是,这种通话模式就是典型的PC to PC 的通行模式了。 3.2 需求分析 在社区网络环境中,两个电脑用户之间要相互电话,这是IP电话的基本功能,除此之外,用户之间可能还需要进行文件的传送,文字信息的交流等等。所以,在该系统中,对用户的这些附加需求要有集成。 除了功能上需要满足用户需要之外,在使用上,也应该要尽量使得用户乐意接受才行,为了做到这一点,就要深入到他们的使用环境去分析。 如果我们坐在电脑前或者工作,或者游戏,我们肯定不希望IP电话的界面出现在主屏幕上,所以对用户也应该有这个体谅,即在用户不需要使用IP电话的时候,尽量不要让系统出现,不过,不出现并不代表不运行,否则的话,就没有办法接听到朋友们的电话呼叫了,所以,应该是在某一个角落运行,监视着网络,一旦有电话来到,及时的通知用户,而在没有电话的时候,乖乖的呆在一个角落就可以了。 计算机用户与电话用户还有一个不同,就是用户可能会关闭自己的计算机,所以,对于计算机用户来说,在启动计算机的同时也应该启动网络电话,这样,才不至于在开机的状况下忘了打开网络电话,也就是说系统要有自动运行的功能。 3.3 数据流程图 该系统最关键的地方就是语音通信,图3-1是语音通信部分的数据流程图。至于其他的文字信息传输,文件传输等等模块的数据流程图基本上都相似,只要把图中的相应数据换成需要的数据就可以,所以,作为示例,在这里只给出这一种数据流程图。 图3-1 数据流程图 第四章 系统设计 本部分主要介绍系统要实现的功能,搭好设计的总体框架,达到对要开发的系统有一个系统、全面、确切的认识的目的。在设计的过程中,使用了结构化以及组件化的设计方法。 4.1 系统功能模块图 本系统在设计时采用结构化程序的设计方法,系统的总体结构采用菜单来调用窗口,除了菜单之外,也增加了相应的命令按钮和快捷键,同时,根据各个模块的特点,将相关的比较通用的功能部分设计成了一个个动态连接库(DLL)的形式,总体设计图如图4-1所示。 IP 电话 系统 启动系统 文件传输系统 文字信息系统 语音系统 管理配置系统 监视系统 程序初始化 音量调节系统 网络设置系统 录音系统 放音系统 传输系统 文件发送 文件接受 发送信息 接受信息 语音系统动态库 图4-1 总体设计图 4.2 功能的说明 该系统相对来说比较完整,从程序的初始化运行,到各种IP数据传输的功能的实现,都集成到了一个完整的系统中,下面按照图4-1的设计图中的模块进行功能说明。 1. 启动系统。启动系统就是应用程序的启动过程,在系统启动的过程中,首先需要按照程序所设定的运行环境进行检查以及程序中的一些初始化操作,如为了使程序不占用太多的用户屏幕,启动的时候就最小化,只在任务栏中建立一个程序托盘。此外,因为是在网络环境中,有必要检查一下网络的连接状况,如果网络连接正常,就启动信号监测系统来监测随时都有可能来自于用户或者网络上的使用电话的请求;如果连接不正常,就应该告诉用户此时的网络电话处于一种什么样的状态,如可用或者不可用等。 2. 文件传输系统。文件传输完成的任务是在通信双方进行文件的传递,因为文件一般都比较大,所以在传输的过中,需要将文件进行分割,同时,传输的时间也可能比较长,在传输的过程中出错误的可能性很大,需要有错误处理的功能,在本系统中,要求实现断点传输,也就是说在传输的过程中,如果传输出现了问题,在重新开始新的传输过程的时候,可以继续错误发生前的文件传输,从而实现断点续传的功能等。 3. 文字信息系统。文字信息就是文字聊天,与一般的聊天软件一样,具有实时发送、接收文字信息的能力。 4. 语音系统。这是该系统的主要部分,实现电话的功能,通话双方从开始呼叫,到建立连接,再到通话,再到关闭电话,基本具有电话通信的所有功能,不管是在社区网络环境,还是Internet环境,都可以使用这个语音系统完成电话通信,主要包括的功能有采集语音数据,数据压缩处理,数据传输处理等多种功能,因为这个处理过程相对独立,所以,应该设计成一个动态连接库的形式。 5. 管理配置系统。所谓管理配置,实际上就是应用程序环境的设置以及一些设备的设置,如需要调节音量等。 第五章 程序编码与实现 本部分是系统的详细设计与实现过程,详细说明了系统建立过程与实现,使用Visual C++ 6.0作为开发工具。 5.1 启动系统的程序设计 5.1.1 托盘程序的建立 为了使系统启动后可以自动隐藏,需要建立一个托盘程序。建立托盘的过程如下: 1. 在应用程序类中InitInstance()函数中的增加使主窗口隐藏的代码:m_pMainWnd->ShowWindow(SW_HIDE); 2. 在CMainFrame类中增加NOTIFYICONDATA结构的保护成员变量m_tnid,并在其OnCreate函数中return语句前加入生成托盘图标的代码: m_tnid.cbSize=sizeof(NOTIFYICONDATA); m_tnid.hWnd=this->m_hWnd; m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; m_tnid.uCallbackMessage=MYWM_NOTIFYICON; //用户定义的回调消息 CString szToolTip; szToolTip=_T("IP电话(Demo版"); _tcscpy(m_tnid.szTip, szToolTip); m_tnid.uID=IDR_MAINFRAME; HICON hIcon; hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_tnid.hIcon=hIcon; ::Shell_NotifyIcon(NIM_ADD,&m_tnid); if(hIcon)::DestroyIcon(hIcon); 3.为了处理图标回调消息,如鼠标左键双击、鼠标右键单击消息,需要重载WindowProc()函数。此外,还希望在主框架窗口最小化时图标不在任务栏的空白区出现,在此函数中同时作相应处理。 LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class switch(message){ case MYWM_NOTIFYICON: //如果是用户定义的消息 if(lParam==WM_LBUTTONDBLCLK) { //鼠标双击时主窗口出现 AfxGetApp()->m_pMainWnd-> ShowWindow(SW_SHOW); } else if(lParam==WM_RBUTTONDOWN){ //鼠标右键单击弹出菜单 CMenu menu; menu.LoadMenu(IDR_MAINFRAME); //载入事先定义的菜单 CMenu* pMenu=menu.GetSubMenu(0); CPoint pos; GetCursorPos(&pos); pMenu->TrackPopupMenu (TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x,pos.y,AfxGetMainWnd()); } break; case WM_SYSCOMMAND: //如果是系统消息 if(wParam==SC_MINIMIZE){ //接收到最小化消息时主窗口隐藏 AfxGetApp()->m_pMainWnd-> ShowWindow(SW_HIDE); return 0; } break; } return CFrameWnd::WindowProc(message, wParam, lParam); } 4.为使应用程序退出时图标消失,映射WM_DESTROY消息,在OnDestroy()函数中加入: ::Shell_NotifyIcon(NIM_DELETE,&m_tnid); 5.1.2 监视系统的建立 监视系统主要监视来自于网络的信号以及用户发送的命令,对于用户发送的命令,是用户通过点击相应的按钮或者菜单来触发的,所以需要在相应的相应的函数里面进行编程,其监视过程是由系统实现的。对于来自于网络上的呼叫信号,则需要建立一个监视的过程了,这就是网络编程中的服务器段的实现,因为需要应用程序以启动就开始运行这个过程,所以,需要在应用程序类中InitInstance()函数中建立,过程如下: 1. 创建服务器套接字(create)。 2. 服务器套接字进行信息绑定(bind),并开始监听连接(listen)。 3. 接受来自用户端的连接请求(accept)。 4. 开始数据传输(send/receive)。 5. 关闭套接字(closesocket)。 对于监视系统来说,一般其工作是与客户端进行配合来完成的,既可以采用TCP连接,也可以采用UDP的形式,前者提供可靠的流连接,后者则是无连接的方式,是一种典型的客户机/服务器(C/S)结构,在后面的文字信息系统,文件传输系统,语音系统部分都使用了这个监视过程,下面是采用TCP与采用UDP的编程模式图,具体应该使用什么模式根据需要而定。 图5-1 面向连接协议的SOCKET编程模型(TCP) 图5-2 无连接协议的SOCKET编程模型(UDP) 5.2 语音系统的实现 语音系统需要设计成一个动态连接库的形式,将所有的录音、放音以及网络传输都放在这个动态库中,所以首先就需要进行接口的设计。 5.2.1 接口设计 接口是动态库向外界提供服务的唯一途径,通过接口,客户程序可以使用动态库提供的各种服务而无需了解其实现细节,实现了实现与服务的分离,既方便了代码得升级维护也利于代码的重用。下表是该通信对象的接口功能的说明。 表5-1语音系统库接口说明 接口 功能说明 TalkStart 启动网络电话,开始讲话 TalkClose 关闭网络电话,释放系统资源,结束通话 5.2.2 录音、放音的实现 以下是录音放音系统的详细实现过程: 1.用waveInGetNumDevs()和waveOutGetNumDevs()查看当前系统波形音频输入、输出设备; 2.按11025Hz,16Bit,单声道,22K/S的格式设置WAVEFORMATEX结构的成员变量,也可以改为其他WAVE格式。WAVEFORMATEX的结构如下: typedef struct { WORD wFormatTag; //数据格式,一般是WAVA_FORMAT_PCM,即脉冲编码 WORD nChannels; //声道 DWORD nSamplesPerSec; //采样频率 DWORD nAvgBytesPerSec; //平均数据传输率 WORD nBlockAlign; //块的大小 WORD wBitsPerSample; //样本大小,WINDOWS支持的大小有8或者16的两种 WORD cbSize; } WAVEFORMATEX; 3.用waveInOpen(...) 和waveOutOpen(...)分别调用WAVE_FORMAT_QUERY参数查看波形输入设备是否支持所设定的格式; 4.再次用waveInOpen(...) 和waveOutOpen(...)分别调用CALLBACK_WINDOW参数打开波形输入设备; 5.分别给音频数据块和音频数据缓冲区分配、锁定全局内存; 6.初始化音频数据块结构各成员变量,主要是将每个缓冲区指针赋给对应数据块结构中的缓冲区指针变量lpData;调用waveInPrepareHeader(...)和waveInAddBuffer(...)将音频数据块赋给输入设备驱动程序; 7.调用waveInStart(...)函数开始录音,调用waveOutWrite(……)函数可释放音。 5.2.2 传输系统的实现 录音开始后,每当有采样数据填满数据块后,设备驱动程序就会发消息MM_WIM_DATA给用户窗口,相应的消息回调函数OnMmWimData(...)对数据块中的采样数据进行处理,然后就可以发送给输出设备进行回放,每当一个音频数据块播放完毕,设备驱动程序又会发出消息MM_WOM_DONE,相应的消息回调函数 OnMmWomDone(...)记录音频数据并经必要准备后重新发送给输入设备,以准备接收后续的采样数据。这样,最初为输入设备准备的音频数据块就在消息的控制下,在输入、输出设备间循环使用,无需人为控制实现了实时采集、处理和播放。 当结束通话时要关闭音频输入设备,这时音频设备驱动程序会发送MM_WIM_CLOSE消息,可在相应的消息函数OnMmWimClose(..)中清除赋给输入、输出设备的音频数据块。 对于声音的传送和接收主要是采用UDP协议,并用Windows Socket进行网络编程实现,但首先要将发送和接收的函数接口放在 OnMmWimData(...)函数中,这样才能做到采集数据块填满后被发送,接收的数据收到后被播放。其实,在打开播音或者录音设备的时候,需要指定一个回调函数,所以,可以在指定的回调函数中实现发送和接收。当然,发送和接收使用的自然是Win socket 编程了。因为要实现点对点通信,所以得把客户和服务器模式融合为一种模式,让服务器可以做客户,客户也可以做服务器,从而使双方都有呼叫对方和接受对方呼叫的能力,这只需增加一个监听Socket就行了。一旦呼叫连接建立成功,便在两个点之间建立了一个数据流,即使双方不讲话,每个点也在不停地收、发数据,一方有话音自然就随着这个数据流传给了对方。 5.3 界面、逻辑功能设计与实现 虽然文件传输、文字信息两个系统功能比较大,但是,放在MFC的程序框架中,则显得比较简单了,只需要在界面上放置好相应的按钮或者设计好菜单,然后在相应的处理函数中设计相应的处理过程,所以,首先需要设计好界面,然后才能够完成编写相应的处理程序。 5.3.1 界面设计 为了给用户提供一个方便的使用界面,需要认真地设计好界面,在程序初始化的时候,其实已经建立了一个原始的启动界面,即托盘。托盘虽然占用的屏幕空间很小,但是其运行效果很好,非常的体谅用户,界面如图5-3所示。 图5-3 系统托盘 除了一个托盘界面外,应该还有一个主程序界面,如图5-4所示。 图5-4 主界面 5.3.2 逻辑功能编码实现 5.3.2.1 拨打电话功能 当用户点击拨打电话菜单的时候,弹出一个拨打电话的对话框,如图5-5所示。 图5-5 拨打电话界面 因为这个模块的功能基本上被设计在动态库中了,所以需要调用动态库,在VC中调用DLL的方法更多,我在这里使用一种静态的调用方法,就是把对应的动态连接库的.DLL文件放到系统目录下,而把对应的.lib文件放到可执行文件的目录下面。下面就是界面上的两个按钮的功能编码实现,主要实现过程如下所示: void CNetPhoneDlg::OnStart() { ………………………… CString str; GetDlgItem(IDC_IPADDRESS)->GetWindowText(str); StartPhone(LPCTSTR(str),1234,1234); ………………………… } void CNetPhoneDlg::OnClose() { ClosePhone(); } 在上面的界面上,还可以看到一个查找的按钮,是用来查找局域网内在线的人员名单的,其实现过程主要用到的函数是WnetOpenEnum(...)、WnetEnumResource(...)、 WnetCloseEnum(...),详细的建立过程是与系统设置中的查找调用的同一个过程,所以,在系统设置部分给出。 5.3.2.2 文件传输功能 文件传输使用TCP协议,因为它保证了发送数据包在接受方处的到达顺序。当用户点击文件传输的时候,触发该过程,界面如图5-6所示,对于文件接收方,需要有一个监视的程序,所以这也是一种C/S模式。 图5-6 文件传输 当用户点击选择文件的时候,会弹出选择文件得对话框,选择文件编码实现如下: …………………………… CFileDialog dlg(true); CString ip; m_You_IP.GetWindowText(ip); CString title="文件发往"+ip+"请选择"; dlg.m_ofn.lpstrTitle=title;//标题条 if(dlg.DoModal()==IDOK) { m_fileName=dlg.GetPathName(); GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_SHOW); pThreadSendFile=::AfxBeginThread(_SendFileThread,this);//开始传送文件线程 } …………………………… 当用户点击发送文件按钮是,就会执行下面的代码: for(;;) { num=myFile.Read(m_buf, SIZEFILE); if(num==0) break;//读文件完毕 end=sockClient.Send(m_buf, num); } 当对方发送文件过来时,首先发送的其实是一个连接请求,需要用户确认,所以,还有一个接受文件的处理过程,如下: for(;;) { n=recSo.Receive(buf,SIZEFILE); //接受 if(n==0) break; //0表示结束 f.Write(buf,n); } 但是,在对方发送请求之前,接收方该如何接收到这个文件传输的信息呢,这就是监视系统发挥作用的时候了,代码如下: UINT _ListenTcpThread(LPVOID lparam) { CMyQQDlg *pDlg=(CMyQQDlg *)lparam; CSocket sockSrvr; pDlg->m_Potr=PORT+pDlg->m_server;//保存当前使用端口,用于关闭 int
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服