欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    计算机科学与技术毕业设计-1.7万字局域网聊天系统的设计与实现.docx

    • 资源ID:985981       资源大小:319.18KB        全文页数:43页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机科学与技术毕业设计-1.7万字局域网聊天系统的设计与实现.docx

    存档日期:存档编号:毕业设计报告题目:局域网聊天系统的设计与实现子课题:学号:姓%院系:整m指导教师:填写说明1 .毕业设计或毕业论文的选题应以专业课的内容为主,可以针对某些基础理论和学术问题进行探讨,也可以结合科技生产和社会生活的实际问题进行研究、开发与设计。2 .毕业设计或毕业论文一般为一人一题。如果选题确需多人合作完成一个课题,须由指导老师提出,经学院主管领导批准,但每个学生必须独立完成其中的一部分工作,并独立撰写各自的设计报告或毕业论文,在课题名称后面注明其相应的子课题。所有学生的选题经研究确定后,一般不允许中途更改课题。特殊情况需要更改课题者,须由指导教师调整或更改选题,且填写毕业设计或毕业论文课题变动申请表,经主管领导批准后方可调整或更改。3 .课题需要多人合作的最多2人。多人合作的须在封面上填写参加者的姓名和联系方式。4 .成果形式一栏填写:软件或论文。5 .本开题报告最迟应在开始毕业设计的前六周确定,并上报给指导老师,必须经指导老师和学院批准方才有效,否则无效。6 .本开题报告使用A4纸张,上、下、左、右页边距均为2.5cm,请不要改变本开题报告页面设置。所有自己书写的内容请使用楷体。研究课题名称局域网聊天系统的设计与实现止月IJ年2009年2月16日2009年5月31日成果形式设计申请者姓名性别班级指导教师姓名性别职称课题组成员姓名性别班级在本项目中的分工负责系统的整体设计与实现并撰写毕业论文研究项目主要内容使用VC+、MFC编程语言;采用UDP协议;采用C/S结构。实现局域网内的通信,暂不考虑文件传输等功能。(1)用户端之间的信息发送,本程序需要实现的最基本的功能。用户在界面上选择需要对话的IP,并将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息正常的发送。在本程序中共需要3个端口,此功能预计使用3号端口。1.在线用户主机IP列表的维护。在用户发送信息之前,需要选择相应的目的地端IP,这也就需要客户端拥有在线用户主机的IP地址,这个在线主机列表的维护是需要客户端定时自动向服务器端发送信息,服务器端收集并维护在线用户列表,再发送回客户端。需要在客户端和服务器端都使用定时器来完成此功能。此功能预计使用1、2号端口。拟采取的研窕方法和技术路线(包括研究工作的总体安排、步骤和各时间段的工作任务等)2009年2月15日前:查阅资料,为设计做准备2009年2月16日一2009年2月20日:对系统进行可行性研究分析,确定系统开发具有可行性;2009年2月21日一2009年3月10日:对系统进行需求分析,确定系统的总体目标;2009年3月11日一2009年3月25日:对系统进行总体设计,划分系统模块;2009年3月26日一2009年4月25日:对系统进行详细设计,基本实现整个系统功能;2009年4月26日一2009年5月8日:对系统进行调试、优化和完善,最终实现系统全部功能;2009年5月9日一2009年5月31日:完成毕业设计报告,准备并进行毕业设计答辩。最终成果描述:一套局域网聊天系统与毕业答辩论文。本研究项目的科学依据和意义(包括科学学术意义和应用前景,国内外研究概况,发展趋势,立论依据,本项目的特色或创新之处):本设计将讨论一种基于MFCSocket的局域网通信系统的设计与实现方法。基于MFCSocket的局域网通信系统可以为局域网提供一种良好、安全、快速的通信机制,在局域网内部通信、教学、讨论等应用中都具有一定的实用价值,它同时很好地诠释了MFCSoCket通信的原理。基于SoCket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。基于局域网的即时通信系统,实际上是互联网即时通信熊的一个小规模版本。广域网上的即时通信工具,如今一般采用UDP或者TCP协议体系来实现。开发技术已经比较成熟,比如较早的ICQ.MSNMessenger.YAHOO通等国外开发的产品,还有国产的有名的QQ、新浪UC、LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信。尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOo通的易操作性等,而QQ也具有一个相当方便的屏幕截图功能。另外,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但由于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/1P协议的软件产品。在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要简单,但是可以借此理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。指导教师意见(对本项目的研究意义、研究方案、取得预期成果的可能性等签署具体意见):指导教师(签字):年月日学院指导委员会意见:负责人(盖章):年月日毕业设计报告原创性声明局域网聊天系统的设计与实现摘要:本文介绍了采用MicrosoftVisualC+6.0编程开发视频聊天系统的一套比较常用的解决方案。文字聊天采用TCP模式;语音视频聊天采用UDP模式,在客户端之间点对点的进行。在该方案中,通过函数库VFW来实现视频捕获、影像压缩以及影像播放。微软公司提供的专门用于视频捕获开发的工具包VFW(VedioForWindows),为在Windows操作系统中实现视频捕获提供了标准的接口,从而大大降低了程序的开发难度。在视频传输方面,则通过组建视频帧,将位图形式的视频帧压缩成帧格式的MPeg4流,传输到客户端后,解压并显示影像。同时,在本方案中,采用了线程来实现语音录制和语音回放,最终实现了通过服务器中转的文字聊天、点对点的语音视频聊天。关键词:文字聊天;VFW;视频传输;语音回放DesignandImplementationofLAN-BasedChatRoomSystemAbstract:Asanewtoolaboutcommunication,videochattingsystemhasbrokenthroughgeographicalrestrictions,hasprovidesmoreconvenient,flexibleandcompletetransmissionandservice.Furthermore,ithasaverybrightfuture.ThecommonsolutionabouthowtodevelopavideochattingsystemisintroducedbytheMicrosoftVisualC+÷6.0programming.TCPmodelisusedinthetextchattingandUDPforthepoint-to-pointvideochatsbetweentheClients.Inthisplan,VideoCapture,VideoCompressionManagerandDrawDibarerealizedbythefunctionsofVFW(VedioForWindows)Library.ThespecialkitVFW(VideoforWindows)invideocaptureofferedbyMicrosoftCorporation,hasprovidedastandardinterfaceforvideocaptureinWindowsOperatingSystemandthusgreatlyreducedthehardshipofprogramming.Invideotransmissionaspect,itrequiresavideoframewhichiscompressedthevideoframeofbitmapintoMpeg4steamofframeform.ThenitwillbedecompressedintoimagessinceithasbeenarrivedtheClient.Meanwhile,thethreadisusedtoachieveaudiorecordingandreplaying.Finally,ithasrealizedthetextchattingthroughaservertotransit,thepoint-to-pointaudioandvideochats.Keywords:textchatting;VFW;videotransmission;audioplaying第1章绪论31.1 课题背景及意义31.2 课题现状3第2章开发技术的原理性说明42.1 WIN32编程(即SDK程序设计原理)42.2 MFC(MicrosoftFoundationClass)52.2.1 简介52.2.2 MFC与C语言APl的关系52.2.3 MFC类库52.3 TCP/IP协议及WINDOWSSOCKETS网络编程接口62.3.1 TCPZIP协议简介62.3.2 WindowsSocket网络编程简介62.4 多线程技术62.4.1 进程及线程概述62.4.2 MFC对多线程编程的支持72.5 VFW简介72.6 VC+6.0简介10第3章需求分析及可行性研究113.1 系统功能模块图113.2 需求分析113.2.1 功能需求分析113.2.2 性能需求分析133.2.3 运行需求分析133.3 可行性研究133.3.1 成本可行性133.3.2 技术可行性143.4 软硬件环境143.5 界面的设计143.5.1 登陆界面143.5.2 服务端界面设计153.5.3 客户端界面设计15第4章详细设计及编码实现164.1 文字聊天164.1.1 TCP套接字的运用164.1.2 文字聊天实现174.2 语音视频聊天194.2.1 UDP套接字的运用194.2.2 视频的捕捉204.2.4 视频捕获驱动244.2.5 语音录制244.2.6 语音回放254.2.7 视音频的传输26第5章测试285.1 测试285.2 测试结论28第6章总结与展望296.1 总结296.2 展望29毕业设计体会30致谢31参考文献32英文翻译资料33第1章绪论1.1 课题背景及意义随着Internet的不断发展普及,网络通讯成为人们生活中的一部分。网络聊天已和手机等一样,成为人们运用最为广泛的通信工具之一。本设计主要目的是为了满足人们通讯交流的便捷,实现灵活、全面的音、视频信息的传递和服务。模拟QQ软件,开发一个多功能的聊天系统软件,本毕业设计主要实现语音视频聊天、文字聊天等功能。本设计开发采用C/S结构,在VC开发环境下,使用C+编程语言进行本软件的开发。在本文中,将讨论一种基于MFCSocket的局域网通信系统的设计与实现方法。基于MFCSoCket的局域网通信软件可以为局域网提供一种良好、安全、快速的通信机制,在局域网内部通信、教学、讨论等应用中都具有一定的实用价值,它同时很好地诠释了MFCSocket通信的原理。1.2 课题现状基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟,比如较早的Icq>MSN、YahOo!通等国外开发的产品,还有国产的有名的QQ、百度hi!,中国移动通信fetion等,这些工具统统都实现了广域网上的即时通信。所有上述软件都实现了网络即时的文字,视频语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但由于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要简单,但是可以借此理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。第2章开发技术的原理性说明2.1 Win32编程(即SDK程序设计原理)所谓的Win32开发,就是在C+语言的层面上,直接使用Win32API(ApplicationProgrammingInterface:系统开放出来,给程序员使用的接口。)开发WindoWS应用程序或者系统程序。虽然现在直接用Win32APl开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的良好途径。所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。下面是进行直接的Win32SDK方式编程的基本思路或者说是一个框架。一个WindoWS程序分为程序代码和UI(USerInterface用户界面)资源两大部分,两部分最后以RC编译程序编译为一个完整的EXE文件。所谓Ul资源是指功能菜单、对话框外貌、程序图标、光标形状等等。这些IJl资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在,如.ico.bmp.cur等等。程序员必须在一个所谓的资源描述档(.rc)中描述它们。RC编译器(RC.EXE)读取RC文件的描述后将所有Ul资源文件集中制作出一个.Res资源文件,再与程序代码结合在一起,这才是一个完整的WindOWS可执行文件。1 .WinMain函数main()函数是C+程序的进入点,而WinMain函数则是Windows程序的进入点。2 .Msg结构体定义了一个MSg结构体,是WindoWS内设的一种数据格式,在WindoWS程序中,消息是由MSG结构体来表示的。3 .注册窗口RegiSterClaSS()完成注册窗口类的功能,设定窗口的属性:边框、颜色、标题、位置等等。4 .创建窗口CreateWindoW函数可以用于创建父窗口、弹出窗口以及子窗口,在创建窗口时它可以确定窗口类、窗口标题、窗口风格、大小以及初始化位置。5 .显示窗口创建窗口后需要使用ShowWindow函数用于显示窗口。6、刷新窗口调用UpdateWindow函数来刷新窗口。7 .消息循环初始化工作完成后,WinMain进入所谓的消息循环,使用While循环,不断的GetMessage,再使用TranSlateMeSSage将消息转化,用DiSPatChMeSSage将消息传递给窗口函数去处理。8 .获取消息GetMeSSage功能函数从消息队列中获取消息,如果消息队列中没有消息,此功能函数则会一直等得消息。9 .转换消息将特定的消息转换为不同的消息,例如消息队列中同时有WM.KEYDOWN和WM-KEYUP消息时,意味着用户同时按下了键盘上的某几个键,此时TranslateMessage将其转换为一个WM_CHAR消息。10 .将消息发送到回调函数DispatchMessage通过USER模块的协助将消息送到该窗口的窗口函数去了,但是DispatChMessage并没有指定函数名,却可以将消息传送过去,这是因为消息发生的时候,OS己经根据当时状态,为它标明了所属窗口,而窗口所属的窗口类亦是明确的。11 .WinMain函数返回值returnmsg.wParam;返回结构体变量msg中的wParam的值。12 .WindOWPrOC窗口函数窗口中的生命枢纽:窗口函数WindOWPrOc。WindoWProC是一个CaIIbaCk函数,常利用SWitCh/case方式判断消息的种类,以决定处理方式。2.2 MFC(MicrosoftFoundationClass)2.2.1 简介MFC是在1992年随微软的MicrosoftC/C+7.0编译器发布的,是建立在WindowsAPI之上的C+类库(C+ClassLibrary),意图是使WindoWS程序设计过程更有效率,更符合面向对象的精神。现在MFC已经成为了Windows环境上标准的C+APIoMFC使得开发WindoWS应用程序变得简单容易,将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在ViSUaIC+内部也内建了很多对MFC的非常实用的东西,例如类向导这样的支持,减少软件开发的时间,使用类向导可以生成从hell。WorId这样的简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。MFC在整个WindOWS家族中都是兼容的。2.2.2 MFC与C语言API的关系设置MiCrOSOft基本类库与其它WindOWS类库所不同的唯一特征就是它与C语言编写的WindOWSAPI的紧密的映射关系。而且,可以将直接调用WindOWSAPI与调用类库自由地混合起来使用。这种直接访问并不意味着类可以完全取代API。开发者有时必须直接调用一些WindOWS函数,例如,SetCursor和GetSyStemMetrics。只有在有明显优势时,一个WindoWS函数才被一个类成员函数所替代。2.2.3 MFC类库MFC类库是一个很大的、扩展了的C+类层次结构,与传统上使用C语言直接访问WindowsAPI相反,MFC已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用C编写的Windows程序所必需的,因此用MFC编写的程序要比用C语言编写的程序小得多,当然MFC所编写的程序的性能也毫无损失。必要时,也可以MFC可以用面向对象的方法来调用WindoWSAPI,因为MFC不修改也不隐藏Windows程序的基本结构。MFC是很庞大的。例如,版本4.0中包含了大约200个不同的类。事实上,你可能只需要使用其中的十多个不同的类,就可以建立一个非常漂亮的程序。MFC层次结构大约可分为几种不同的类型的类:1 .根类:CobjectMicrosoft基本类库中的大多数类都是由在类层次表中根上的唯一的一个基类派生而来的。2 .MFC应用结构类MFC应用构造类有助于一个框架应用的构造。它们对大多数应用提供了通用功能。可以在框架中填写对于应用特定的功能。3 .窗口、对话和控件类类CWnd和它的派生类封装了HWND,它是一个WindoWS窗口。CWnd可被自己使用,也可以作为派生新类的基类。类库提供的派生类表示各种窗口。CWnd是所有窗口的基类。可以使用CWnd派生出来的一个类,也可以从其中派生出自己的类。4 .绘画和打印类在WindoWS中,所有的图形输出都是在一个可视的绘图区上。这叫作一个设备上下文(或DC)。MFC提供了封装不同DC类型的类,也提供了对WindoWS绘图工具,例如位图、刷子、调色板和笔的封装。5 .文件和数据库类这些类允许将信息存储在一个数据库或一个磁盘文件中。有两个数据库类的集合-DAO和ODBC-它们提供了相似的功能。6 .Internet和网络类这些类允许和其它使用ISAPl的计算机或一个WindoWSSocket交换信息。还有创建ISAPl扩展DLL的类的集合和操作WindoWS套接字的类的集合。支持连接的类的分类:ISAPl类、Windows套接字类、Win32Internet类。7 .其它还有简单的数据类型类、OLE类、调试和异常类、数组列表和映射类。2.3 TCP/IPKSWINDOWSSOCKETS网络编程接口2.3.1 TCP/IP协议简介通常包含了一系列与“TCP(传输控制协议)”和“IP(网际协议)”有联系的网络协议,它包括其它的协议,应用软件,甚至网络媒介。这些协议的示例是:UDP(UserDatagramProtocol)协议、ICMP(InternetControlMessageProtocol)协议、ARP(地址解析协议)和其他一些协议的协议组。应用的示例:telnet(远程登录)、ftp(文件传递协议)、http等。这其中一些协议最早发源于美国国防部的ARPA网项目。2.3.2 WindowsSocket网络编程简介Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个SOCket接口来实现。WindowsSockets规范定义了一套开放的、支持多种协议的、Windows下的网络编程接口。它不仅包含了人们所熟悉的BerkeleySocket风格的库函数,也包含了一组针对Windows的扩展库函数,使得程序员能充分地利用Windows消息驱动机制进行编程。现在的WindoWSSoCketS已经基本上实现了与协议无关,你可以使用WindoWSSOCketS来调用多种协议的功能,但较常使用的是TCP/IP协议。2.4 多线程技术2.4.1 进程及线程概述进程和线程都是操作系统的概念。每个进程是由一个或多个线程、私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。进程是应用程序的执行实例。线程是进程内的执行路径,也是Win32安排的最小执行单元。线程包括堆栈、CPU寄存器的状态和系统计划程序执行列表中的项。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的,此线程终止时,进程也终止。用户可以根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中,所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,但是必须使用信号灯或其他进程间的通信方法协调它们的工作。一般情况下进程中的每个线程都独立运行的,对进程中的其他线程一无所知,除非使这些线程相互可见。多线程可以实现并行处理,避免了某项任务长时间占用CPlJ时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPlJ资源,反而会降低系统的性能。这一点在多线程编程时应该注意。2.4.2 MFC对多线程编程的支持Win32SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。VisualC+6.O中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。CWinThread对象代表在一个应用程序内运行的线程。运行的主线程通常由CWinApp的派生类提供;CWinAPP由CWinThread派生。另外,CWinThread对象允许一给定的应用程序拥有多个线程。CWinThread支持两种线程类型:工作者线程和用户界面线程。工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。用户界面线程具有收发消息的功能,并处理从系统收到的消息。CWinAPP及其派生类是用户界面线程的例子。其它用户界面线程也可由CWinThread直接派生。CWinThread类的对象存在于线程的生存期。如果你希望改变这个特性,将m_bAutoDelete设为FALSE。要使你的代码和MFC是完全线程安荃的,CWinThread类是完全必要的。框架使用的用来维护与线程相关的信息的线程局部数据由CWinThrCad对象管理。由于依赖CWinThread来处理线程局部数据,任何使用MFC的线程必须由MFC创建。例如,由运行时函数JDCginthreadCX创建的线程不能使用任何MFCAPIo为了创建一个线程,调用AfxBeginThread函数。根据你需要工作者线程还是用户界面线程,有两种调用AfXBCginThread的格式。如果你需要用户界面线程,则将指向你的CWinThread派生类的CRuntimeClass的指针传递给AfXBCginThread。如果你需要创建工作者线程,则将指向控制函数的指针和控制函数的参数传递给AfXBeginThread。对于工作者线程和用户界面线程,你可以指定可选的参数来修改优先级,堆栈大小,创建标志和安全属性。AfXBCginThread线程将返回指向新的CWinThread对象的指针。与调用AfxBeginThread相反,你可以构造一个CWinThread派生类的对象,然后调用CreateThreado如果你需要在连续创建和终止线程的执行之间重复使用CWinThread对象,这种两步构造方法非常有用。创建线程也可以使用APl函数:CrCateThrCad函数完成。其它还有挂起线程、结束线程等函数,将不再一一详解。2.5 VFW简介VFW是MiCrOSC)ft1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件。为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫Avl的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,以及在AVl文件中交替存储视频帧和与之相匹配的音频数据。VFW给程序员提供VBX和AVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。用户不必专门安装VFW,在安装WinCIOWS时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。VFW主要由以下六个模块组成:1. VICP.DLL:包含了执行视频捕获的函数,它给AVl文件、I/O和视频音频设备驱动程序提供一个高级接口;2. MSVIDEO.DLL:用一套特殊的DraWDib函数来处理屏幕上的视频操作;3. MCIAVI.DRV:此驱动程序包括对VFW的MCl命令的解释器;4. AVIFlLE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问AVI文件;5. 压缩管理器(ICM):管理用于视频压缩/解压缩的编解码器(CODEe);6. 音频压缩管理器ACM:提供与ICM相似的服务,不同的是它适于波形音频。Visua1C+在支持VFW方面提供有vfw32.lib、msacm32.lib、Winmm.Iib等库。特别是它提供了功能强大、简单易行、类似于MCIWnd的窗口类AVlCap。AVICaP为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。AVlCaP支持实时的视频流捕获和单帧捕获,并提供对视频源的控制。虽然MCl也提供数字视频服务,比如,它为显示AVl文件的视频提供了AVIVideO命令集,为视频叠加提供了。Verlay命令集,但这些命令主要是基于文件的操作,不能满足实时地直接从视频缓存中获取数据的要求。对于使用没有视频叠加能力的捕获卡的PC机来说,用MCI提供的命令集是无法捕获视频流的。而AVlCaP在捕获视频方面具有一定的优势,它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可将数字视频捕获到文件。在视频捕获之前需要创建一个捕获窗,所有的捕获操作及其设置都以它为基础。用AVICap窗口类创建的窗口(通过CapcreateCaptureWindow函数创建)被称为“捕获窗”,其窗口风格一般为WS-CHILD和WS_VISIBLE。实际上,捕获窗类似于标准控制(如按钮、列表框等)。捕获窗具有下列功能:1 .将视频流和音频流捕获到一个AVl文件中;2 .动态地同视频和音频输入器件连接或断开;3 .以OVerlay或PrevieW模式对输入的视频流进行实时显示;4 .在捕获时可指定所用的文件名并能将捕获文件的内容拷贝到另一个文件;5 .设置捕获速率;6 .显示控制视频源、视频格式、视频压缩的对话框;7 .创建、保存或载入调色板;8 .将图像和相关的调色板拷贝到剪贴板;9 .将捕获的一个单帧图像保存为DIB格式的文件。AVICap在显示视频时提供的两种模式:1 .预览(PreVieW)模式:该模式使用CPU资源,视频帧先从捕获硬件传到系统内存,接着采用GDl函数在捕获窗中显示。在物理上,这种模式需要通过VGA卡在监视器上显示。2 .叠加(OVerIay)模式:该模式使用硬件叠加进行视频显示,叠加视频的显示不经过VGA卡,叠加视频的硬件将VGA的输出信号与其自身的输出信号合并,形成组合信号显示在计算机的监视器上。只有部分视频捕获卡才具有视频叠加能力。灵活编写AvlCaP提供的回调函数还可满足一些特殊需求。比如,将宏CaPCaPtUreSequenceNoFile同用CaPSetCaIIbaCkOnVideOStream登记的回调函数一起使用,可使应用程序直接使用视频和音频数据。在视频聊天的应用程序中可利用这一点来获得视频帧,回调函数将捕获的图像传到远端的计算机。应用程序可用捕获窗来登记回调函数(由用户编写,而由系统调用),以便在发生下列情况时,它能通知应用程序,作出相应的反应:捕获窗状态改变;出错;视频帧和音频缓存可以使用;在捕获过程中,其它应用程序处于让步(Yield)地位。视频捕获编程也要用到涉及视频捕获的结构、宏、消息和函数。令人高兴的是,发送AvIeaP窗口消息所能完成的功能都能调用相应的宏来完成。例如,SendMessag(hWndCap,WM_CAP_DRIVER_CONNECT,0,OD与CaPDriVerConneet(hWndCap,0)的作用相同,都是将而建而捕获窗扃视频输入器件连接起来。视频部分主要是利用VideoCaPtUre函数库来获取影像的。VideoCaPtUre主要提供下列功能:连接驱动程序;获取影像、声音资料,并显示在屏幕上或者是存成AVl文件;获取单张影像显示在屏幕上,拷贝至剪贴簿,或者是存成DIB(Device-IndependentBitmap)文件。VideoCapture的主要结构:结构体CAPTUREPARAMS主要包含一些获取图像的参数:DWORDClwRequestMicroSecPerFrame代表相邻两个frame的获取时间间隔;BOOLfYield值为TRUE,则表示WindoWS会以另一个thread来捕获影像,值为FALSE,程序会在捕捉影像后显示忙碌状态;BOOLfCaptureAudio其值表示是否需要同时获取声音资料。结构体BITMAPlNFo和点阵图有关,主要定义了影像获取之后显示在屏幕上、存储在文件中的格式,它包含两个成员:bitmapinfoheaderbmiHeader描述影像性质的结构,其成员记载了影像的大小、颜色深度和压缩的方式,该成员在VideOCaPtUre、VideoCompressionManager和DraWDib函数库中,以及有关于点阵图的应用中;RGBQUADbmiColors指向Colortable第一个元素的位置。结构体COMPvARS主要是记录所有和压缩相关的信息,重要的成员:DWORDfccHandIer为COmPreSSOr句柄;LPBITMAPINFOIPbiln指向待压缩影像BITMAPINFO的指标;LPBITMAPINFOIPbitOUt:指向压缩完影像BITMAPINFO的指标;LONGIKey代表key-framerate,而所谓keyframe是指此frame在解压缩时不需要依赖前面的frame;LONGIQ代表影像压缩后的品质,取值为1100OO的整数。VideoCompressionFUnCtionS主要记录压缩功能相关的信息,其包含的比较重要的成员:ICLoCate输入指向压缩前后BITMAPINFO的指标,以及欲使用的CodeCs;ICCoInpressorChoose呼叫一个系统内建的对话,其中包含所有可能使用的codes以及其相关参数;ICCOnIPreSSQUery询问COnIPreSSOr是否支持某种压缩方式,输入参数为COmPreSsorhandle及指向压缩前后BlTMAPlNFO的指标,此函数会传回询问结果;ICCompressBegin要求系统准备相关资源以供压缩之用;ICConipress压缩某个frame;ICCompressEnd归还相关资源给系统;ICDOmPreSSQUery询问decompressor是否支持某种解压缩方式;ICDOnIPreSSBegin要求系统准备相关资源以供解压缩之用;ICDOmPreSS解压缩某一个frame;ICDompressEnd归还相关资源给系统;ICDompressFree归还C0MPVARS所占用的资源。2.6VC+6.0简介我们通常所说的ViSUalC+实际上是一个完善的、非常强大的C+程序开发环境,它的名字是MicrosoftDeveloperStudio0二者之间的细小差别并不重要,通常这两个术语可以互换。但如果你不围绕DeVeloPerStudio来进行学习,就不能有效地使用VisualC+(DeveloperStudio听起来很像ViSUaIStudio,但它们之间没有关系)。它包含:C+编译器、调试器、应用程序框架生成器、项目管理器、设计和实现菜单等资源的编辑器等等。第3章需求分析及可行性研究3.1 系统功能模块图图3.1系统功能模块图3.2 需求分析3.2.1 功能需求分析1 .文字聊天文字聊天采用的是TCP模式,包括服务器端(server)和客户端(CIient)。首先启动服务器端,客户端通过用户名和密码登录服务器,服务器响应客户端登录并提示有用户登录,此时两个用户就可以进行文字聊天,在文字聊天时信息通过服务器中转,而每个用户可以同时与多个用户进行文字聊天。当有用户退出时,服务器做出响应,提示在线用户,XX用户下线。文字聊天流程图如图3.2。图3.2文字聊天流程图2 .语音视频聊天语音视频聊天时采用的是UDP模式,客户端与客户端点对点的进行,不需要经过服务器端中转。在文字聊天的基础上,客户端之间自行处理的语音视频聊天,运用VFW函数库中的函数对USB口输入的数字视频信息进行相关处理,比如:视频捕获、影像压缩以及影像播放等,同时利用线程来处理声音部分的录制、回放等。A客户端向B客户端请求语音视频聊天是通过B客户端的用户名来获得B客户端的IP地址,并向B客户端发送语音视频聊天请求,当B客户端接受后捕获视频,并进行压缩传输到A客户端解压并进行播放,在B客户端接受视频的同时,A客户端也捕获视频,压缩传输到B

    注意事项

    本文(计算机科学与技术毕业设计-1.7万字局域网聊天系统的设计与实现.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开