为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 多功能聊天软件的设计与开发(有源程序代码)——音频视频聊天模块(可编辑)

多功能聊天软件的设计与开发(有源程序代码)——音频视频聊天模块(可编辑)

2018-02-28 23页 doc 53KB 119阅读

用户头像

is_737483

暂无简介

举报
多功能聊天软件的设计与开发(有源程序代码)——音频视频聊天模块(可编辑)多功能聊天软件的设计与开发(有源程序代码)——音频视频聊天模块(可编辑) 多功能聊天软件的设计与开发(有源程序代码)——音 频视频聊天模块 源程序代码等全套设计联系 174320523 各专业都有 分类号:TP311.1U D C:D10621-408-2007 5726-0 密 级:公 开 编 号:2003214040 成都信息工程学院 学位论文 多功能聊天软件的设计与开发 ??音频/视频聊天模块 论文作者姓名: 张伟涛 申请学位专业: 计算机科学与技术 申请学位类别: 工学学士 指导教师姓名(职称):...
多功能聊天软件的设计与开发(有源程序代码)——音频视频聊天模块(可编辑)
多功能聊天软件的与开发(有源程序代码)——音频视频聊天模块(可编辑) 多功能聊天软件的设计与开发(有源程序代码)——音 频视频聊天模块 源程序代码等全套设计联系 174320523 各专业都有 分类号:TP311.1U D C:D10621-408-2007 5726-0 密 级:公 开 编 号:2003214040 成都信息学院 学位论文 多功能聊天软件的设计与开发 ??音频/视频聊天模块 论文作者姓名: 张伟涛 申请学位专业: 计算机科学与技术 申请学位类别: 工学学士 指导教师姓名(职称): 张仕斌(副教授) 论文提交日期: 2007年06月10日 多功能聊天软件的设计与开发??音频/视频聊天模块 摘 要 随着互联网技术的飞速发展,基于网络的即时通信给人们带来诸多便利,也成为当今网络应用的主流。聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流,比如腾讯公司的聊天软件。本毕业设计就是模拟聊天软件,开发一个包括文字聊天、文件传输、语音及视频交流等功能 的聊天软件。 本设计的开发采用C/S结构,在基于.NET开发环境下,使用C#编程语言进 行本软件的开发。本文首先论述国内外聊天工具的发展情况和现今的发展方向, 并对开发环境和开发语言进行了简单介绍;对本设计所要开发的多功能聊天软件 作了较为详细的需求分析,并给出了多功能聊天软件的设计方案,主要功能包括 文字聊天、文件传输、语音聊天及视频聊天等;本毕业设计主要实现的是多功能 聊天软件的部分功能,即语音聊天、视频聊天等功能,主要实现用户注册、用户登 录、用户之间语音、视频聊天功能;与另一位同学开发实现的文字聊天与文件传 输模块集成在一起,构成一个实用的、功能完善的聊天软件,达到预期目标;通过 运行、测试与分析说明,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。 关键词:聊天软件;视频聊天;语音聊天;C/S结构;聊天软件 Design and Development of the Multi-function Chat Software??Audio/Video Chat Module Abstract With the rapid development of Internet technology, the instant messenger based on network brings many conveniences to the people, also becomes the focus of network application in present. Chat is one of the most widespread instant messengers, may facilitate the people to carry on the online information exchange at anytime and anywhere, such as the chat software of Tencent Company. This graduation project simulates chat software, develops chat software, which includes the writing, file transfer, audio and video chat and so on. This design development uses the C/S structure, uses the C# programming language to carry on developing this software based on .NET environment. This paper first elaborates the development situation of domestic and foreign chats tool and the development direction nowadays, and has carried on the simple introduction to the development environment and the development language. The demand of multi-function chat software is analyzed in detail, and its plan is provided. It’s main functions include the writing, file transfer, audio and video chat and etc. This graduation project mainly realizes the partial functions of multi-function chat software, namely the audio chat, the video chat and so on, which mainly realizes the user registration, the user login, audio chat and video chat. Finally, this design integrates the functions that another schoolmate designs the writing and file transfer, which forms chat software of practical and full functions. This software achieves the anticipated target. Through the running, the test and analysis, it shows, this multi-function chat software is stable, reliable, and has some practical values. Key words: Chat Software; Video Chat; Audio Chat; C/S Structure; Chat Software 目 录 论文总页数:21页 1 引言 1 1.1 课题背景 1 1.2 国内外主要聊天工具的发展状况 1 1.3 本课题研究的意义 2 1.4 本文的主要工作 3 2 需求分析及开发工具 3 2.1 需求分析 3 2.2 开发工具 4 2.2.1 C#语言的介绍 4 2.2.2 C/S结构的介绍 5 2.2.3 开发环境 6 2.2.4 SQL Server 2000数据库介绍 7 3 多功能聊天软件的设计方案 8 3.1 聊天系统流程的分析与设计 8 3.2 注册模块的分析与设计 9 3.3 登录模块的分析与设计 9 4 语音、视频聊天模块的具体实现 10 4.1 Video for Windows简介 10 4.2 G729.dll的简介 10 4.3 LanMsgLibrary.dll的简介 11 4.4 语音、视频聊天的模块设计思想 11 4.5 视频聊天与语音聊天模块功能的具体实现 13 5 登录、注册模块功能模块及其它特殊功能模块实现分析 14 5.1 登录模块功能的具体实现 14 5.2 注册模块功能的具体实现 14 5.3 头像闪动功能的具体实现 15 6 系统的综合测试与分析 16 结 论 18 参考文献 19 致 谢 20 声 明 21 1 引言 1.1 课题背景 随着互联网技术的发展,互联网应用越来越丰富。互联网以其独特的传播方式吸引了大量用户,同时也给人们带来了许多便利,譬如可以借助于网络进行相互交流、信息传递等。聊天工具作为互联网中运用最为广泛的通信工具之一,它可以让用户之间进行即时的交流和信息的传递。聊天工具的出现可以说是基于互联网通信交流方式的历史性变革,它已经渐渐取代了原来效率低、费用高的如信件、电报的通信方式,以其快速、交互、简便的方式给用户的交流提供了简单、易用的信息平台,成为现今应用最为广泛的即时通信工具之一。随着相关技术的日益发展,用户对功能的需求不断提高。为了更好地服务于用户,聊天工具的功能也在不断地完善。在未来的网络时代中,聊天工具将以即时通信为其基本特点, 并与各种网络应用整合,同时随着无线网络的广泛应用,它将成为未来不可缺少的一种通信软件。 1.2 国内外主要聊天工具的发展状况 中国的大部分网络用户都拥有自己的号码。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具??腾讯即时通信Tencent Instant Messenger,简称TIM或腾讯。腾讯经过三年时间的发展,到2002年,其用户群成为中国最大的互联网注册用户群,注册用户达到1亿6000万,其中活跃用户总数超过5000万。自此腾讯成为中国最大的即时通信服务提供商。腾讯公司是中国最早也是目前中国市场上最大的本土互联网即时通信软件开发商。公司成立7年多以来,一直以追求卓越的技术为导向,始终处于稳健、高速发展的状态。腾讯超过4.3亿的注册用户群体现了网络用户对腾讯这一聊天工具的广泛应用。在当今市场经济高速发展的前提下,腾讯也在不断自我完善,渐渐地演变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊天用户带来越来越多的人性化服务:从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件。 ICQ和MSN是在国外比较盛行的即时聊天工具,腾讯的开发对MSN和ICQ都进行了借鉴。ICQ是I Seek You(我找你)的缩写,最初是一家以色列公司开发出来的免费软件,中文名称目前可以称之为“网络呼叫器”,它在全球拥有超过4000万的用户。事实上这种软件最主要的功能就是让用户知道网络上的朋友现在有没有上线(前提是对方也有安装ICQ),然后可以互送Messages(消息)交谈或是交换档案等等,比电子邮件更具即时性。正如一位ICQ软件的最初程序设计员所说:“当你登录因特网之后,你周围都是些自己熟悉的人,而且,你还可以和他们 分享这种体验,这的确是一件令人激动的事情。” MSN是微软推出的聊天软件,是一套类似ICQ的网上即时通讯软件,它以最简单的方式为用户提供强有力的即时消息支持,同时能使Microsoft Outlook ExpressR 和MSN HotmailR变得更简单易用。MSN Messenger Service 还可使用户间的联机交谈变得更加轻松愉快,了解谁在联机以及查看用户何时联机并与其交换即时消息。用户间可以进行单独的聊天,或者在同一个对话窗口中与多达四个的联系人进行聊天。自动的输入指示器可让用户知道何时联系人正在输入答复,还可以进行全球电话呼叫??以非常低的费用呼叫世界的任何地方。用户可以选择所要使用的电话服务提供商,从服务提供商的列表中选择最适合的提供商。用交谈取代键盘输入,使用计算机上的话筒和扬声器就可以和位于世界各地的朋友进行交谈,甚至可以呼叫联系人将文本消息发送到联系人的移动电话和传呼机上(注:此特性仅适用于美国和加拿大),而进入“聊天室”结识新朋友,或加入与名人聊天,此特性在所有地区都适用。用户可以使用 MSN Messenger 与朋友交换照片、喜爱的音乐或任何其他文件,也可以监视新的电子邮件并查看用户有多少新的电子邮件。MSN Messenger能在收到新的 Hotmail邮件时通知用户,还能邀请联系人进行联机DirectPlay 兼容游戏。 1.3 本课题研究的意义 在当今信息时代,信息通信已成为这个世纪必不可少的组成部分,随着互联网技术的发展,聊天软件作为即时性通信工具的主流,已被越来越多的人所喜爱。在中国,上网的用户几乎都用腾讯进行聊天。当前腾讯的注册帐户已经超过4.3亿,是中国用户最多、最为流行的聊天工具。起初的只支持文字聊天,随着相关技术的发展,腾讯也不断的自我完善,增加众多实用的、人性化的功能,得到了 许多用户的支持与喜爱。现如今腾讯公司已经初步完成了面向在线生活产业模式的业务布局:构建了、、游戏以及移动手机门户这四大网络平台,形成了规模巨大的网络社区。在满足用户信息传递与知识获取需求方面,拥有门户、即时通讯工具以及年初收购的Foxmail电子邮件等;在满足用户群体交流和资源共享方面,腾讯推出的个人博客Q-Zone将与访问量极大的论坛、聊天室、群相互协同;在满足用户个性展示和娱乐服务方面,腾讯拥有非常成功的虚拟形象产品show、pet(宠物)和Game(游戏)Music/Radio/LiveTV音乐/电台/电视直播等,另外对手机用户提供了彩铃、彩信等无线增值业务;在用户的交易需求方面,专门为腾讯用户设计开发的C2C电子商务拍卖网已经上线,并和整个社区平台无缝整合。像这样聊天工具已经逐渐适应了时代的发展,市场的需求,给人们提供了全方位的信息服务平台,使用户在互联网上的生活更加丰富多彩,它不仅带来了巨大的商业价值,而且也给人们的生活带来了无比的欢乐与便利。 1.4 本文的主要工作 随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。为了满足用户的需求,包括腾讯公司的聊天软件在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。本文主要对聊天软件的语音聊天和视频聊天等相关功能的实现原理进行了研究。 本文首先对聊天软件的发展以及其对人们的生活有何影响作了简述,并对开发环境和工具进行了相应说明并对此聊天软件系统进行了较为详细的分析;进而提出了该多功能聊天软件的设计方案。在本次多功能聊天软件的设计与开发中,本人主要负责设计开发登录模块、注册模块、语音聊天模块、视频聊天模块,并 对此聊天软件系统的登录模块、注册模块、语音聊天、视频聊天模块的设计与实现进行了较详细的说明和分析。 2 需求分析及开发工具 2.1 需求分析 此聊天软件系统是模拟现今国内最为流行的即时性通讯工具而设计的,能够实现注册、登录、添加好友、文字聊天、文件传输、语音聊天、视频聊天等功能。该聊天软件系统是采用C/S结构,即客户端与服务器端的结构体系。基于对该聊天软件功能的分析,本文分别对客户端与服务器端进行了设计。 该聊天软件服务器端的功能是实现对客户端提交的用户信息进行处理。服务器设计内容包含:信息接收、注册、登录、刷新、更新、添加好友等。“信息接收”是提供服务器接受客户端发送信息的功能;“注册”是服务器端接受到用户的注册信息请求后,将请求信息写入到数据库,为用户的注册提了相关服务;“登录”是服务器通过验证登录信息来实现相关的服务;“刷新”是对服务器的更新数据每过一段时间进行一次刷新,来显示用户当前在服务器的信息状况,如在线状态等;“更新”是服务器对用户在数据库中信息进行相关的操作;“用户退出处理”是服务器在用户退出聊天系统后作出的相关处理工作;“好友添加”是服务器对添加的好友信息进行处理等相关操作。 客户端即用户使用的应用程序端。用户通过该聊天软件的客户端来实现网上聊天的相关功能:注册、登录、添加好友、文字聊天、文件传输、语音聊天、视频聊天等。注册功能是提交用户相关信息以及获得一个属于自己登录该聊天软件系统的用户ID号;登录功能是实现验证用户信息与合法使用该聊天软件系统的权限;添加好友是实现用户之间好友添加的操作;添加好友成功后,就可以与好 友之间开始文字聊天、文件传输、语音聊天、视频聊天等功能。 (1)该服务器的运行环境: ? 操作系统:windows2000或windows2003; ? 内存:256M以上(最低为256M); ? CPU:IntelR CeleronR 2.0GHz或AMD 1800+以上均可; ? 其它:Microsoft .NET Framework SDK。 (2)客户端的运行环境: ? 操作系统:windows XP或windows2003等; ? 内存:256M以上(最低为256M); ? CPU:IntelR CeleronR 2.0GHz或AMD 1800+以上均可; ? 摄像头、耳机等外部设备。 第一次使用系统的用户通过填写个人信息来注册,服务器返回一个注册ID号给注册用户,用来登录。已经注册的用户在登录界面填写完相关登录信息,通过服务器的验证后就可以进入客户端界面。在线用户在添加好友时可以查看所要添加用户的列表信息。当对要添加的好友发送请求添加的信息后,由该好友验证是否通过请求,同意后会向请求方发送同意添加的消息。当请求方添加完成后,服务器端会把相关信息存入到好友表的数据库中。完成以上操作以后,两人即可进行在线聊天。 2.2 开发工具 2.2.1 C#语言的介绍 C#(Csharp)是一种最新的、面向对象的编程语言,它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序。Microsoft .NET提供了一系 列的工具和服务来最大程度地开发、利用计算与通讯领域。C#面向对象的卓越设计使它成为构建各类组件的理想之选??无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#使得C++程序员可以高效率地开发程序,而绝不损失C/C++原有的强大功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快地转向C#。 C#语言是允许类型定义、扩展的元数据,这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并把他们应用于任何语言元素类、接口等等。然后,开发人员可以编程检查每个元素的属性。这样,很多工作都变得更加方便:譬如编写一个小工具来自动检查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对应有助于加强程序的预期行为和实际实现的之间的对应关系。 在C#中,每个对象都自动生成为一个COM对象。开发者不再需要显式的实现IUnknown和其他COM接口.这些功能都是内置的、类似的,C#可以调用现有的COM对象,无论它是由什么语言编写的。C#包含了一个特殊的功能:使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C++特性,如手工的内存管理和指针运算。这是其相对于其它环境的极大优势。这意味着C#程序员可以在原有的C/C++代码的基础上编写程序,而不是彻底放弃那些代码 2.2.2 C/S结构的介绍 C/S(client/server)结构,即被广为熟知和使用的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到client端和server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是client/server形式的两层结构,由于现在的软件应用系统正在向分布式的web应用发展,web和client/server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部用户和外部用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的c/s体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是client端还是server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,c/s结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。 C/S架构软件的优势与劣势: (1)应用服务器运行数据负荷较轻。最简单的c/s体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。 (2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功 能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在c/s体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。 (3)c/s架构的劣势是高昂的维护成本且投资大。首先,采用c/s架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。 2.2.3 开发环境 微软发布了.NET开发平台,这是自1993年7月随着Windows NT3.0出现的Win32 API后微软软件开发平台的第一次大升级。比起Win16来,Win32提供了更多功能强大的API,但没有对工具和技术进行引人注目的改变。与之不同的是,.NET开发平台在开发者用以创造应用程序的工具和技术上做了根本的改变。 .NET开发平台使得开发者创建运行在Internet Information Server IIS(互联网信息服务器)Web服务器上的Web应用程序更为容易,它也使创建稳定、可靠 而又安全的Windows桌面应用程序更为容易。 .NET开发平台包括以下内容: (1).NET Framework(架构),包括:Common Language Runtime(CLR)(通用语言运行环境),这是用于运行和加载应用程序的软件组件;新的类库,分级组织了开发者可以在他们的应用程序中用来显示图形用户界面、访问数据库和文件以及在Web上通信的代码集。 (2).NET开发者工具,包括:Visual Studio .NET Integrated Development Environment(IDE)(Visual Studio .NET集成开发环境),用来开发和测试应用程序。 (3).NET编程语言(例如Visual Basic .NET和新的Visual C#),用来创建运行在CLR下并且使用类库的应用程序。 (4)ASP .NET,一个取代以前的Active Server Pages(ASP)的特殊类库,用来创建动态的Web内容和Web服务器应用程序,这些都将采用诸如6>HTML、XML和Simple Object Access Protocol(SOAP)(简单对象访问)等Internet协议和数据格式。 .NET开发平台是一组用于建立Web服务器应用程序和Windows桌面应用程序的软件组件,用该平台创建的应用程序在Common Language Runtime(CLR)(通用语言运行环境)(底层)的控制下运行。CLR是一个软件引擎,用来加载应用程序,确认它们可以没有错误地执行,进行相应的安全许可验证,执行应用程序,然后在运行完成后将它们清除。 类库集提供了使应用程序可以读写XML数据、在Internet上通信、访问数据库等的代码。所有的类库都建立在一个基础的类库之上,它提供管理使用最 为频繁的数据类型(例如数值或文本字符串)的功能,以及诸如文件输入/输出等底层功能。 Web服务器应用程序通常依赖于ASP.NET,一个处理Web请求的服务器端的库。ASP.NET又依赖一个用于发送和接收SOAP信息的Web Services库,以及一个用于以浏览器接收用户输入并动态地生成Web页面以示响应的Web用户接口(UI)(有时称作Web 表单)。Windows桌面应用程序通过使用Win表单库(也称作Windows 表单)可以显示一个图形UI。 最后,Visual Studio .NET提供了一个用于在该平台上创建应用程序的图形Integrated Development Ewironment(IDE)(集成开发环境)。程序员可以使用一种或多种.NET编程语言,来编写他们的代码,例如微软自己的Visual Basic .NET(VB.NET),Visual C++, Visual C#和JScrjpt .NET等。大量其它的.NET编程语言可以从第三方厂商获得。 2.2.4 SQL Server 2000数据库介绍 MicrosoftSQLServer2000是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。众所周知,SQLServer2000能够满足今天的商业环境要求不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。除这些核心企业品质外,SQLServer2000还为您的数据管理与分析带来了灵活性,允许单位在 快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQLServer2000为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLServer2000是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言XML的核心支持以及在Internet上和防火墙外进行查询的能力。 3 多功能聊天软件的设计方案 3.1 聊天系统流程的分析与设计 图1 系统流程图 此聊天软件采用了C/S结构,其系统流程图如图1所示,使用这个聊天系统软件的用户必须先进行注册。用户首先选择注册选项,填写相关的注册信息,然后通过网络提交给服务器,再由服务器将注册信息提交给数据库。同时服务器会按顺序生成一个登录ID号返回给注册用户,这样注册就完成了。完成注册的用户可以用返回的ID号和自己注册时填写的密码进行登录。用户将登录信息提交给服务器,服务器根据数据库中的注册信息与登录信息进行比较,比较一致后,则进入系统的客户端应用程序模块。这时你要与好友进行聊天,则必须添加好友:进行用户2添加用户N为好友的操作过程中,用户2首先向用户N发出添加好友的请求信息,当用户N接受到用户2的信息,在通过验证后会发送确认反馈信息给用户2,并且向服务器提交好友添加确认信息,这时服务器就会更新相应用户的好友列表中的信息。好友添加完成后,用户之间就可以进行彼此之间的通信,如文字聊天、视频聊天、语音聊天、文件传输等。 以上为多功能聊天软件系统的总体流程图,其中包括了登录模块、注册模 块、添加好友模块、服务器模块、数据库模块等。在这个多功能聊天软件系统开发设计与实现中,本人主要负责登录模块、注册模块、语音聊天与视聊天功能模块的设计与实现。下面就对登录模块与注册模块的流程进行了分析。 3.2 注册模块的分析与设计 用户通过填写注册相关的信息并将其提交给服务器,服务器将用户填写的相关信息存入的数据库中去,同时在按顺序自动生成一个ID号,发给注册用户,表明注册成功,此ID号就为用户登录帐号。图2所示为其系统结构图。 图2 注册系统 3.3 登录模块的分析与设计 图3 登录系统 用户在注册获得ID号码后,在登录界面填写ID号码和密码并提交给服务器,服务器通过用户提交过来的信息和数据库中原有的用户信息进行比较和验证,如果结果一致表明验证成功,用户进入到客户端的系统界面下,如果不一致,给用户返回登录错误信息。登录系统流程分析图3所示。 本设计主要完成的是视频聊天、语音聊天模块,以及登录、注册模块,下面对其设计与实现进行详细的说明。 4 语音、视频聊天模块的具体实现 4.1 Video for Windows简介 VFW是Microsoft 1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫AVI的文件,该标准未规定如何对视频进行捕获、压缩 及播放,仅规定视频和音频该如何存储在硬盘上,在AVI文件中交替存储视频帧和与之相匹配的音频数据。VFW给程序员提供.VBX和AVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。现在用户不必专门安装VFW了,Windows95本身包括了Video for Windows1.1,当用户在安装Windows时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。VFW主要由以下六个模块组成: (1)AVICAP.DLL:包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一个高级接口。 (2)MSVIDEO.DLL:用一套特殊的DrawDib函数来处理屏幕上的视频操作。 (3)MCIAVI.DRV:此驱动程序包括对VFW的MCI命令的解释器。 (4)AVIFILE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问.AVI文件。 (5)压缩管理器(ICM):管理用于视频压缩-解压缩的编解码器(CODEC)。 (6)音频压缩管理器ACM:提供与ICM相似的服务,不同的是它适于波形音频。 4.2 G729.dll的简介 G.729算法是ITU-T制定的编码速率为8kb/s的共轭结构码激励线性预测声码器语音编码算法标准,作为低速率的语音编码器,在传输的带宽有限的情况下运用越来越受到广泛的重视。G.729系列算法声码器的原理都是相通的,各种算法不同之处在于算法的简化和编码比特的多少。G.729编码器是基于码激励线性预测(CELP)声码器模型的。这个编码器运算的帧长为10ms,相应于抽样率为8000kHz的语音数据流的80个样值,具有8kbit/s的编码速率,较低的延迟和高 编码语音质量等优点。 本程序在语音聊天模块中,调用了G729.dll动态链接库文件,它包括G.729的函数和资源,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。 4.3 LanMsgLibrary.dll的简介 该聊天软件系统的语音聊天、视频聊天功能的实现主要是引用了LanMsgLibrary.dll这个动态链接库文件,它包括VFW以及其他相关的函数与资源。在音频与视频聊天实现的过程中,程序就引用了LanMsgLibrary.dll中的VFW以及相关的函数和资源。在视频聊天过程中,主要实现了视频的捕获与播放,视频流的压缩与解压。在语音聊天过程中,主要实现了声音的采集与播放,通过调用了G729.dll动态链接库文件,对音频进行了压缩与解压。 在整个语音聊天与视频聊天实现的过程中,程序主要对LanMsgLibrary.dll的引用来实现其功能。 4.4 语音、视频聊天的模块设计思想 对于一个端对端的语音聊天系统来说,主要涉及两个方面的动作,即语音的采集和播放、语音数据的发送和接收。系统采用多线程的设计思想来完成并协调各个过程。语音的采集实际上就是一个音频压缩的过程。语音的播放是声音数据流的还原过程,通过一个父线程读取接收线程接收到的数据,并通过管道让其子线程播放解压后的声音数据。语音数据的发送和接收主要用Socket编程来实现,socket是网络通讯过程中端点的抽象表示。为了通过socket接口进行网络通讯,程序在对话的每一端都需要一个socket,两个socket采用无连接的UDP协议。 用户1通过麦克对自己的声音进行采集,在通过压缩,使其在网络上传输的效率更高,然后再进行传输,当用户2接收到用户1的声音数据后将其解压,然后进行播放,如图4所示。 图4 语音模块数据流程图 在进行语音聊天时,两台计算机必须先要建立连接,如图5所示,用户1向用户2发送“发送语音请求”信息,用户2收到用户1请求信息后,发送回应信息给用户1,如果用户2同意,开始语音聊天;不同意,停止语音聊天。 图5 语音聊天建立连接图 此视频模块的设计思想与语音模块一致,也涉及到两个方面的动作,视频的采集和播放,视频数据的发送和接收。视频的采集与播放是基于VFW来实现的,利用VFW的关于数字视频的软件包实现对视频的采集与播放。视频数据的发送与接收同样采用了Socket编程,在发送视频时,通过Socket端口进行监听。当收到对方发送的包含视频请求信息和对方IP地址、端口号等信息后,如果同意请求,则向请求方发送包含了本地IP、端口号的接受视频信息,这样就建立了连接,开始视频聊天。 用户1通过摄像头进行视频采集,经过压缩后,向用户2发送采集后的视频数据。用户2接收到用户1发送的视频数据并将其进行解压,然后在用户2的采集窗口上播放,这样视频的传输就完成了。视频模块数据传输流程如图6所示。 图6 视频模块数据传输流程图 在进行视频数据传输前,两台计算机必须先要建立连接,其原理和语音聊天建立连接的原理一致。用户1向用户2发送视频请求,用户2在接收到用户1 的请求后,给用户1发送收到请求后的回应信息,如果同意用户1的请求则用户1与用户2开始视频聊天,如果不同意就终止视频聊天。视频聊天建立连接如图7所示。 图7 视频聊天建立连接图 4.5 视频聊天与语音聊天模块功能的具体实现 聊天软件所包含的视频聊天和语音聊天功能的实现,满足了用户对聊天软件的需求,使聊天软件的功能更加人性化。 当用户通过登陆进入到聊天软件客户端的主程序后,通过程序udpThread new Threadnew ThreadStartUdpReceiveMsg;udpThread.Start开辟并启用了udp的线程,而且调用了UDP的UdpReceiveMsg()的接收函数,用来接收数据,通过程序videoThread new Threadnew ThreadStartvideo;videoThread.Start开辟并启用了视频线程,专门用来好友之间的视频、语音聊天,此线程调用了videoSocket.Listen2007函数用来对2007端口进行监听。当用户1和用户2之间要进行视频、语音聊天时,用户1双击用户2头像进入与用户2的视频对话框中,点击“请求视频”按钮后,来激发bt_video_Clickobject sender, EventArgs e事件的发生,此事件中包含了ReadyConnectremoteIP, 2007, new ClassMsg"RSC", my_id.ToString , null 函数,这个函数的功能是将带有自己ID号、"RSC"的控制字符的信息通过端口2007中发送到用户2的主机。这时用户2的客户端程序对2007端口进行了监听,将用户1的信息交给DataArrivalbyte[] Data, //.ddress Ip, int Port函数处理,此时通过选择语句来判断执行程序,用户1发送给用户2的控制字符为"RSC",则系统弹出“用户1请求与你视频聊天”的对话框提示信息给用户2,用 户2如果同意与用户1进行视频聊天,则用户2点击接收视频按钮,来触发 button1_Clickobject sender, EventArgs e事件,来对视频设备和音频设备等 进行初始化,并通过//.//.ializeBinarynewClassMsg"BVS", my_id.ToString , null.ToArray, remoteIP, 2007函数告诉用户1可以开始视频聊天了,用户1通 过对端口2007的监听,会根据接收到用户2发来的"BVS"控制字符来执行相应的 程序,这触发了this.myVideoEvent + new MyFileEventvideo_connection事件, 调用video_connectionobject sender函数进行视频、语音聊天连接的建立,在 这个函数中调用Connectstring ip, int port函数,用户1就可以与用户2建立 连接,并且开始进行视频、语音聊天。要结束用户1与用户2之间的视频、语音 聊天,可以单击“取消视频”按钮,从而激发button2_Clickobject sender, EventArgs e事件,如果当前处于视频、语音聊天的状态,就会调用停止视频、语 音聊天事件,并且向对方发送提示信息,同时释放资源。如果用户2接收到用户1 的请求信息,却不想与用户1进行视频、语音聊天,直接点击“取消视频”按钮触 发该事件即可,将拒绝信息用函数udpSocketSend.SendToBsendinfo, remoteEP发送给用户1。以上就是语音视频实现的大概过程。 5 登录、注册模块功能模块及其它特殊功能模块实现分析 5.1 登录模块功能的具体实现 登录模块是用户身份的验证模块,该聊天软件系统通过服务器对用户输 入的密码和用户ID与注册时的用户ID和密码进行比较,来进行对用户身份的验 证,看用户是否有权限使用该聊天软件。 登录模块实现的具体步骤是首先在程序开辟一个单线程的程序入口点, 在客户端主函数运行时,程序调用Client_Loadobject sender, System.EventArgs e函数,将界面显示为登录界面,进行登录操作。当用户在登录界面填写完用户ID与密码时,单击登录按钮,此时调用button3_Clickobject sender, System.EventArgs e事件,通过tcpc.Connectip,port函数与服务器连接,并进行异常处理。如果连接失败,提示错误信息;如果连接成功,通过调用SendMsgNetworkStream ns函数将登录信息发送到服务器端来进行相关验证,当客户端接收到从服务器发送的temp"ACC"信息后,会显示一个窗体说明登录成功,点击“完成”按钮就完成登录操作,进入到用户客户端模式下。如果从服务器端发送的信息为temp"UAC",表明登录失败并弹出一个提示错误信息窗体。单击取消按钮会调用button4_Clickobject sender, System.EventArgs e事件来关闭窗体以及客户端程序。 5.2 注册模块功能的具体实现 注册模块的功能是可以让用户获得使用该聊天软件系统的权限,用户可以通过注册来获得登录时的用户ID号。双击应用程序进入登录界面后,没有注册的用户可以点击登录界面的“帐号申请”按钮,这时程序就调用button1_Clickobject sender, EventArgs e事件,进入到注册模块界面。然后填写相关的注册信息,单击确定按钮,调用button1_Clickobject sender, EventArgs e事件,先对填写的信息进行判断,看是否有误,如果有误就显示错误提示信息;如果填写信息正确,就通过tcpc.Connectserverip , port函数对服务器进行连接,并进行异常处理。连接不成功时,会提示错误信息;如果连接成功,注册信息会通过服务器写入数据库中。这时服务器就返回一个用户ID号码,触发 this.MyIDChange + new //.ventMyid_Change 注册程序中的事件发生,并调用Myid_Changeobject sender, WinCtrlLib.MyEventArgs e 函数将服务器返回的 用户ID显示在注册界面上。不想注册的用户点击“返回”按钮,触发button2_Clickobject sender, EventArgs e事件,关闭注册对话框。这样注册模块功能就实现了。 5.3 头像闪动功能的具体实现 在用户之间进行聊天的过程中,如果用户1向用户2发送信息,用户2在接收到用户1信息的同时,用户1的头像会在用户2客户端界面上不断地闪烁,来提醒用户2已经接收到用户1的信息,用户2可以双击用户1的头像来查看用户1所发的信息。 其实现相关代码如下: private void timer1_Tickobject sender, EventArgs e if ChatWin.Createds false && msgrec true int i; i jishi % 2; if i 1 pb_user.Visible false; else pb_user.Visible true; jishi i + 1; ChatWin.Createds是建立好友对话框的变量,msgrec是接受好友信息的变量,申明一个变量i,并且让i等于jishi除以2的模,jishi等于i加1,也就是说,在这段代码中i的值不是为1,就是为0,当i等于1时,客户端界面则不显示该好友的头像,当i等于0时,该客户端显示该好友头像,这段代码调用了timer1_Tickobject sender, EventArgs e这个方法,让其每隔一段时间执行一次jishii+1,让i的值在1和0之间变化,这样就可以达到接收到信息头像闪烁的效果。当好友对话框没有建立并接收到好友信息时,这时条件符合,则开始头像闪烁。如过好友对话框已经建立或者没接收到好友的信息,条件不符合,不执行该段代码,好友头像不闪烁。 6 系统的综合
/
本文档为【多功能聊天软件的设计与开发(有源程序代码)——音频视频聊天模块(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索