局域网广播系统_第1页
局域网广播系统_第2页
局域网广播系统_第3页
局域网广播系统_第4页
局域网广播系统_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGEI郑州大学毕业设计(论文)题目局域网广播系统毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:

学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期:年月日导师签名:日期:年月日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日郑州大学电气工程学院毕业设计(论文)任务书学生学号专业计算机科学与技术班级指导教师单位郑州大学职称高级工程师题目局域网广播系统一、毕业设计(论文)内容本系统是一个利用MFC实现的屏幕广播系统,是一个可以用于网络教学、交流的简单实用的工具。二、毕业设计(论文)应达到的主要指标远距离的技术支持必须依赖技术人员和用户之间的电话交流来进行,这种交流既耗时又容易出现错误。局域网广播管理系统就很方便的解决了这些问题。1.可以实现网络教学。在计算机教学实验中,指导老师的口头讲解往往不能使学生充分理解,这时就需要将老师的电脑屏幕图象实时传送到学生的电脑主机上,以方便学生的理解。此系统刚好能满足这方面的需求。2.实现屏幕的实时截取和传送。现在实时在线网络视频等都是在需要这样的一种技术,通过对局域网的研究来满足这方面的需求。我们这次开发过程中主要采用vc6.0作为主要的开发工具。采用vc++语言开发。三、设计(论文)成品要求1、实现远程视频教学、以及实时图像的传递。2、实现远程声音、图像和数字的实时传输。四、参考资料[1]AnthonyJones著京京工作室译Windows网络编程技术机械工业出版社出版[2]AnthonyJones,JimOhlund著杨合庆译Windows网络编程(第2版)清华大学出版社出版2002.10[3]BruceEckel著C/C++编程思想刘宗田等译机械工业出版社出版[4]揣锦华编著面向对象程序设计与VC++实践西安电子科技大学出版社2005.02[5]杨小平主编VC++项目案例导航科学出版社2003.2[6]刘静华,王永生著最新VC++绘图程序设计技巧与实例教程科学出版社出版2001.3[7]村山公(日)保著TCP/IP计算机网络篇科学出版社2003.04[8]李凌编著Winsock2网络编程实用教程清华大学出版社出版[9]邓全良编著Winsock网络程序设计中国铁道出版社2002.07[10]BeckZaratian著詹津明杨欣译VisualC++使用指南清华大学出版社五、进度安排进行日期:第周1~13周(2012年3月3日~5月30日)周次设计内容指导时间地点1项目任务和目标周五下午阶梯教室2、3资料准备周五下午阶梯教室4、5系统分析、需求收集和分析

周五下午阶梯教室6、7概要设计周五下午阶梯教室8详细设计周五下午阶梯教室9、10编写代码周五下午阶梯教室11、12功能模块对接及测试周五下午阶梯教室13完善各项文档及和报告周五下午阶梯教室指导教师:李海洋摘要本系统是一个利用MFC实现的屏幕广播系统,是一个可以用于网络教学、交流的简单实用的工具。远距离的技术支持必须依赖技术人员和用户之间的电话交流来进行,这种交流既耗时又容易出现错误,许多用户对电脑知道的很少,当遇到问题时,他们必须向无法看到自己电脑屏幕的技术人员描述问题的症状,并且严格遵守技术人员的指示,精确地描述屏幕上的内容,而这一点对大多数没有什么电脑技术的用户来说很难做到,有了局域网广播系统,技术人员就可以看到用户的电脑屏幕很快找到问题的所在。在计算机教学实验中,指导老师的口头讲解往往不能使学生充分理解,这时就需要将老师的电脑屏幕图象实时传送到学生的电脑主机上,以方便学生的理解。此系统刚好能满足这方面的需求。本系统主要涉及服务器屏幕图像的获取、图像压缩、传送及接收。这个系统利用windowssocket来实现网络通信。MFC提供了类CAsyncSocket与其派生类CSocket来进行通信编程。为了满足用户的要求,我在毕业设计中,用visualC++开发了一个局域网数据广播系统。并且作为毕业设计,对自己大学期间的学习做一个总结。关键字:广播数据报/屏幕广播/套接字AbstractThissystemisaScreenBroadcastingSystem,whichismadewithMFC.ItisasimpletoolwhichcanbeusedinNetworkteaching,communicationandsoon.Remotetechnicalsupportmustrelyontheexchangeoftelephoneoftechnicalstaffwithuser.Thiskindofcommucationwilltaketimeandwillprobablymakemistakes.Manypeopleknowlittleofcomputer,whentheymissproblems,theymustdescribethesymptomoftheproblemstotechnicianswhocannotseethescreenoftheusers’computers.Alsotheusersmuststandbytheindicationsoftechnicianstrictly,todescribethecontentsoftheirscreen.Thisisdifficulttodofortheuserswhoknowlittleofcomputers.IfwehaveTheLANbroadcastingsystem,technicianswillbeabletoseethescreensofusers’computersandcansoonfindwheretheproblemis.Incalculatorteachingexperiment,Theoralcommunicationthatguidetheteacherexplainindetailandcan'tusuallymakestudentcomprehendingwell.Nowweneedtosendthepictureoftheteachers’computertostudents’,witheasytounderstandforthestudents.Thissystemcansatisfytheneedofthisaspectattherightmoment.Thissystemmainlyinterferewithhowtogetthescreenpicture,howtocompressthepictures,andhowtosendandreceivedata.WeuseWindowsSockettotransmitthedata.MFCofferaclassCAsyncSocketandaclassCSocketforustocommunicateinformationinthenetwork.Forthesakeofrequestthatsatisfythecustomer,Ingraduatedesign,IusethevisualC++developpedalocalareanetworkdatabroadcastsystem.Alsoasgraduatedesign,Ididasummarytothestudyoftheperiodinuniversityinmyself.KeyWord:Broadcastingdatareport,broadcastingofscreen,Socket目录毕业设计(论文)任务书 1摘要 4Abstract 5目录 61绪论 71.1该课题国内外发展现状 71.2项目来源及目标 81.3设计方法 81.4功能 92visualC++6.0及winsock2简介 102.1 visualC++6.0简介 102.1.1什么是VisualC++集成开发环境 102.1.2VisualC++开发环境的窗口 112.1.3使用在线帮助 132.2MFC简介 162.2.1封装 162.2.2继承 172.2.3虚拟函数和动态约束 172.2.4MFC的宏观框架体系 182.3.1什麼是WindowsSockets 202.3.2WinSock的历史和优点 212.3.3MFC中winsock的应用 222.3.4WinSock编程模型 233系统总体设计 263.1系统总体要求 263.1.1设计要求 263.1.2可行性分析 263.1.3设计思路 263.2需求分析 263.2.1引言 263.2.2任务概述 273.2.3功能需求 273.2.4运行环境 273.3功能模块框图 283.3.1整个系统总体模块图为: 283.3.2模块功能图为: 283.3.3服务器端模块框图为: 293.3.4服务器端各模块描述框图如下: 293.4各模块功能描述 303.4.1服务器端各模块功能 303.4.2客户端各模块功能 304服务器端功能实现 314.1实现方法简要介绍 314.1.1截取屏幕 324.1.2数据压缩 324.1.3传送数据 344.2服务器端个模块流程图 354.3服务器端主要界面 365全文总结 375.1总结 375.2课题展望 37致谢 38参考文献 39附录 401服务器端主要程序代码 402英文资料 483中文翻译 551绪论1.1该课题国内外发展现状局域网数据广播技术可以广泛地应用到网络维护和管理方面。据统计,目前全世界80%以上的计算机网络主要从事网络通讯,因此该课题在国内外已经出现了很多类似的系统。有星澜多媒体网络教室,海天屏幕广播以及其他网络教室等。星澜多媒体网络教室(CinlaniClass)是一套应用于校园局域网和多媒体网络教室的教学应用软件,它针对多媒体网络技术和实际学校应用环境进行分析和优化处理,具有强大的教学能力和便捷的操作能力。新版本的“多媒体网络教室”在性能方面得到了很大的改进,全面支持Window98/Window2000/WindowXP,运行速度比以前更快,运行更加稳定可靠。另外,多媒体网络教室新增功能提供更加灵活的教学手段,使您的教学效果事半功倍。

海天屏幕广播软件采用虚拟显示驱动,实时性好,CPU占用低,在局域网内能取得很好的效果。可以直接广播视频画面。本软件为绿色软件,仅服务端需要安装一个虚拟显示驱动程序,无需设置,操作简单。可应用于学校,企事业单位教学,培训,演示等场合。在进行通讯处理时,并不需要进行复杂的科学计算,而是主要从事大量数据的发送、接收工作。为了有效地使用连接局域网内计算机系统中的大量数据,很有必要采用一整套快速有效的数据通讯方法。广播数据即数据从一个工作站出发,局域网内的其他所有工作站都能收到它,这一特征适用于无连接协议,因为LAN上的所有机器都能收到并处理广播消息,使用广播消息的不利之处是每台机器都必须对该消息进行处理。比如,一台机器在LAN上广播一条消息,每台机器上的网卡都会收到这条消息并把它上传到堆栈处理。然后,堆栈将这条消息在所有网络应用中循环,看它们是否应该接受该数据包。通常,这个局域网上的多数机器都不对该消息感兴趣,但是各机器仍需要花费时间来处理该消息,看是否有应用对该数据包感兴趣。结果,高广播通信流使LAN上的所有机器陷入困境,因为每个工作站都要检查这个数据包,一般情况下路由器都不会传送广播包。因此我们所做的这个系统服务器端发送的数据不经过路由器,直接发送到客户端。计算机具备高速传输信道,老师可充分利用在线功能实现师生、生生之间交流,得到及时迅速的反馈信息,大大减少教学的盲目性,提高课堂教学效率。因此越来越多的学校希望进行网络教学,也就需要各种各样的网络教学软件,屏幕广播是其中必不可少而且异常重要的一部分。在局域网中进行屏幕广播当然也是越来越重要的。1.2项目来源及目标远距离的技术支持必须依赖技术人员和用户之间的电话交流来进行,这种交流既耗时又容易出现错误,许多用户对电脑知道的很少,然而当遇到问题时,他们必须向无法看到自己电脑屏幕的技术人员描述问题的症状,并且严格遵守技术人员的指示,精确地描述屏幕上的内容,而这一点对大多数没有什么电脑技术的用户来说很难做到,有了局域网数据广播技术,技术人员就可以看到用户的电脑屏幕很快找到问题的所在。在计算机教学实验中,指导老师的口头讲解往往不能使学生充分理解,这时就需要将老师的电脑屏幕图象实时传送到学生的电脑主机上,以方便学生的理解。为了满足这些用户的需求,我们做了这个系统,希望能取得应有的效果。1.3设计方法屏幕广播原理是先将发送方的屏幕信息截取下来,采用快速压缩算法压缩,然后分割成许多小段,一段一段地通过网络发送出去,接收方从网络上接收信息,然后一段一段地组织起来,解压后再送到显示屏上因为发出的信息需要多台计算机同时接收,因此采用广播数据报方式,本程序使用visualC++6.0开发,用微软的windowssocket进行广播通信。实现此项目,用的方法是,服务器端与客户段分别从CAsyncSocket与CSocket派生出新类,然后再服务器端重新定义onSend函数,利用此函数不断对截取的屏幕信息快速压缩,然后发送,每发送完一屏信息,则截取下一屏信息,每隔一段时间(几毫秒)就用AsyncSelect(FD_WRITE)触发一次发送事件,调用onSend函数发送屏幕数据。在客户端重新定义onReceive函数,在这个函数中不断的接收服务器端发送过来的数据,然后进行解压缩,每接收完一屏的信息则在屏幕上显示。利用AsyncSelect(FD_READ)每隔一段短时间触发一次接收事件,调用onReceive函数不断接收数据显示。通过服务器端不断的截取屏幕发送数据,客户不断的接收显示,在客户端便看到了服务器端连续的动作。1.4功能局域网广播功能,采用MPEG4压缩算法,实时直播教师教学画面和现场实况,还可用于教学实物展示等功能。视频屏幕同步广播,就是将传统多媒体网络教室的屏幕广播功能与视频广播教学的功能结合。教师在屏幕广播的同时,可以将教师端的视频图像同步广播给学生。教师端可以将本地视频窗口从屏幕上隐藏起来,相对增大了教师机屏幕的可视范围,同时也实现了教师机屏幕的美观整洁。网页同步浏览教师在上课时,不免要借助网上资源、课件素材、VOD点播等进行辅助教学,视频多媒体网络教室提供网页同步浏览功能,在教师的控制下,轻松实现教师和学生同步浏览相关的网页、数字图书馆、资源库、VOD节目等等内容。屏幕广播功能主要用于将教师机的电脑屏幕画面信息实施显示给全体、群组或单个的学生观看。利用这种广播教学功能,学生能够直观地看到教师的操作方式,从而快速掌握学习目标。2visualC++6.0及winsock2简介visualC++6.0简介VisualC++6.0是美国Microsoft公司于1998年推出的基于windows98操作平台、功能强大的编程工具,它具有友好的图形化用户界面、面向对象的程序开发、完善而又丰富的库函数以及internet网络应用等诸多功能,使广大程序开发人员能够利用它开发出各种有用的程序。2.1.1什么是VisualC++集成开发环境VisualC++是Microsoft公司提供的在Windows环境下进行应用程序开发的C/C++编译器。相比其它的编程工具而言,VisualC++在提供可视化的编程方法的同时,也适用于编写直接对系统进行底层操作的程序。随VisualC++一起提供的Microsoft基础类库(MicrosoftFoundationClassLibrary,简写为MFC)对Windows9x/NT所用的Win32应用程序接口(Win32ApplicationProgrammingInterface)进行了十分彻底的封装,这使得Windows9x/NT应用程序的开发可以使用完全的面向对象的方法来进行,从而能够大量地节省应用程序的开发周期,降低开发成本,也使得Windows程序员从大量的复杂劳动中解脱出来,而且并没有因为获得这种方便而牺牲应用程序的性能。VisualC++6.0是Microsoft公司出品的基于Windows的C++开发工具,它是MicrosoftVisualStutio套装软件的一个有机组成部分,在以前版本的基础上又增加或增强了许多特性。VisualC++软件包包含了许多单独的组件,如编辑器、编译器、链接器、生成实用程序、调试器,以及各种各样为开发MicrosoftWindows下的C/C++程序而设计的工具。VisualStudio把所有的VisualC++工具结合在一起,集成为一个整体,通过一个由窗口、对话框、菜单、工具栏、快捷键及宏组成的和谐系统,你可以观察和控制整个开发进程。该环境几乎就是VisualC++中所能“看见”的所有东西。所有其他事情都在其管理下在幕后运行。一般情况下,术语VisualC++既指整个产品,又指它的开发环境。2.1.2VisualC++开发环境的窗口从VisualStudio的光盘中运行VisualC++安装程序,完成之后,就可以从“开始”菜单中运行VisualC++6.0。通常,VisualStudio的外观如图A1—1所示。图A1—1VisualStudio集成开发环境的外观VisualC++带有一个预先定义好的工具栏集,单击便可以访问它们。如果需要更多的工具按钮,可以用自己设计的定制工具栏来增大工具栏集。当鼠标停留在工具栏按钮的上面时,按钮凸起,主窗口底端的状态栏显示了对按钮的简短描述;并且,如果光标停留时间长一些,就会出现一个小的弹出式的“工具提示”窗口,它包含了按钮的名字。VisualC++菜单栏是一种特殊形式的工具栏。只有在全屏模式下才能隐藏菜单栏,其他情况下,它就像一个普通的工具栏。当鼠标停留在VisualC++的菜单栏上时,菜单名像工具栏一样呈凸起状。当单击菜单名拉下菜单时,菜单名看起来像是凹进屏幕里。菜单打开后,把鼠标从一个菜单名滑动到另一个会拉下另一个菜单。VisualC++环境几乎总是会响应鼠标右键的单击。当单击鼠标右键时,通常是显示一个与当前鼠标所指向位置相关的弹出式菜单,也称上下文相关菜单。甚至当VisualC++没有打开窗口时,在空白区右击也会产生一个菜单,其中含有使窗口可见和调整工具栏开或关的命令。在工具栏上除标题栏外的任何地方单击右键,可打开同样的菜单。工作时试一试右键,你会发现许多其他的快捷方式。除许多对话框外,VisualC++显示两种类型的窗口,即文档窗口和停靠窗口。文档窗口是一般的带边框子窗口,其中包含有源代码文本和图形文档。Window(窗口)菜单中列出了在屏幕上以平铺方式还是以层叠方式显示文档窗口的命令。所有其他的VisualC++窗口,包括工具栏甚至菜单栏,都是停靠的。开发环境有两个主要的停靠窗口——Workspace(工作空间)窗口和Output(输出)窗口,它们通过View(查看)菜单中的命令变成可见的窗口。停靠窗口可以固定在VisualC++用户区的顶端、底端或侧面,或者浮动在屏幕上任何地方。停靠窗口,不论是浮动着的或是固定着的,总是出现在文档窗口的上面。在屏幕上移动一个停靠窗口时,窗口看起来像是有主意似的,顽强地紧贴着VisualC++主窗口的某一边界,或任何其他它接触到的定位窗口。有两个办法可防止这个问题发生。第一种办法就是在移动窗口时按住Ctrl键,来暂时禁止它的停靠特征。第二种办法只对窗口有效,对工具栏无效,那就是禁止窗口的停靠能力,直到你再次使它生效。在窗口内部右击,从上下文相关菜单中,选择DockingView(停靠视图)命令来关掉命令的复选标志。若关掉窗口的停靠特征,将影响窗口的外观。Workspace窗口包含四个页面,分别显示了项目各个方面的信息。Workspace窗口中可显示的四个页面如下所述:ClassView(类视图):列出项目中的类和成员函数。要在VisualC++文本编辑器中打开类的源文件,双击列表中的要打开的类或函数名即可。

ResourceView(资源视图):列出项目的资源数据,如对话框和位图。同ClassView中一样,双击ResourceView列表中的数据项会打开合适的编辑器并加载资源。FileView(文件视图):列出项目的源文件。把源文件复制到项目夹中,不会自动把文件添加到FileView窗格的列表中。你必须用Project(项目)菜单中的AddToProject(添加到项目)命令明确地把新文件添加到项目中。

DataView(数据视图):显示数据库项目的数据来源信息。DataView页面只出现在VisualC++的企业版的数据库项目中,企业版遵循开放式数据库互连标准(ODBC)来同数据源相连。在Workspace窗口中的某项上右击,会显示一个含有常用命令的上下文相关菜单。菜单中的命令取决于单击在哪一项上。例如,在FileView中右击某一个源文件名,会显示一个快速打开或编译文件的上下文相关菜单。你也可以开关单个Workspace页面。在Workspace窗口的底端的标签上右击来显示上下文相关菜单,然后从菜单中选择有关命令来使页面可见或消失。Output窗口有多个页面:Build(建立)、Debug(调试)、FindInFiles1(在文件1中查找)和FindInFiles2(在文件2中查找)。Build页面显示编译器、链接器和其他工具的状态消息。Debug(调试)页面用于通知来自调试器的提示,这些提示对诸如未处理的异常和内存异常之类的情况提出警告。应用程序通过API函数OutputDebugString或afxDump类库产生的消息,也显示在Debug选项卡中。默认情况下,FindInFiles搜索结果显示在Output窗口的FindInFiles1页面中,但FindlnFiles对话框中有一个复选项,允许你把结果转移到FindlnFiles2页面中。Output窗口中还可以包含其他的页面。2.1.3使用在线帮助VisualC++提供了三个不同的在线帮助来源:由WinHlp32查看器显示的标准HLP文件、对话框中的弹出式帮助信息和MicrosoftDeveloperNetworkLibrary(MSDN)。标准的HLP文件内容包括对开发环境的命令和窗口部件的帮助,当Help(帮助)菜单的UseExtensionHelp(使用扩展帮助)命令被选中,或VisualC++不能为帮助主题确定明确的上下文时,按Fl键就会显示这些帮助文件。

在线帮助的第二个来源是弹出式消息,在开发环境中的许多对话框中都可以使用。选项卡标签和偶尔的提示会尽量解释对话框中的编辑框和按钮的用途,但当标签说明不充分时,总可以通过下列几种方法之一来寻求特殊控件的更多解释:把焦点移到该控件上,并按Fl键;在该控件上右击,来打开What'sThis?。(这是什么)弹出式按钮;单击对话框右上角的问号按钮,然后单击要了解的控件。这三种方法效果完全一样,单击鼠标或按任意键时,这些消息就消失了。

在线帮助的第三个来源MSDN是在VisualC++中工作时最常用的一个。MSDN的内容组织具有很好的逻辑性,而且易于使用,但它也十分庞大。它可以为包括VisualC++在内的整套VisualStudio开发环境工具提供在线帮助。由于所有的工具都可以共享它,因此MSDN是作为一个应用程序单独运行的,没有同任何单个开发环境结合在一起。要从VisualC++中访问MSDN,Help菜单中的UseExtensionHelp命令必须没有被选中。从VisualC++的Help菜单中选择Contents(目录)、Search(搜索)或Index(索引)命令,会使环境通过执行Windows\HH.exe程序来运行MSDN,该程序从文件MSDNVS98.col中加载MSDN目录列表(包含该文件的文件夹名反映了系统的定位设置)。

MSDN库提供的庞大信息集几乎涉及到微软编程工具和Win32编程的每个方面。它包含了成千上万的主题,这些主题讨论了从VisualC++到VisualJ++、从MFC到ActiveX和从abs函数到z排列(z—ordering)的每件事情。MSDN也包括了几本微软出版的重要书籍的全部文字,例如BruceMcKinney的HardcoreVisualBasic和KraigBrockschmidt的InsideOle第二版。你也可以从中找到KnowledgeBase(知识库)主题、MicrosoftSystemsJournal的最新论点、应用程序和设备驱动程序的开发工具包的全部文档、协议文件、范例源代码及其他许多东西。

图A1—3展示了典型的MSDN文章,以两窗格显示。这两个窗格被设计成可以共同工作,左边的窗格允许你选择希望阅读的文章,而右边的则显示找到的文章。在右窗格中,每次都出现主题,它通过超文本链接连接到其他的相关主题。超文本链接也称超级链接,它是文本中一些特殊的词和短语。链接带有下划线,并以突出的颜色显示,这使得它们能很快被识别。当光标移动到MSDN库窗口中的超文本链接上时,光标变成手的形状。在链接上单击,会从MSDN窗口中清除掉当前主题,而代之以超文本链接所指向的新主题。这个效果很像在Internet上浏览Web网页。

MSDN窗口右窗格界面是非常友好的,如果需要阅读帮助文本的话,只要上下滚动窗口即可,此外,还可单击超文本链接,来查看感兴趣的主题。在窗口中,一次只显示一个主题,因此,窗口总是保持干净整洁。为了观察更多的区域,你可以通过单击Hide(隐藏)工具按钮来关掉左边窗格,这样,整个窗口会由于保持固定的大小而收缩。你会发现,通过拖动左边或右边的垂直分隔条,更容易关掉或展开左窗格,这样也维持了MSDN窗口的整体大小。

窗口左窗格中有四个页面:Contents、Index、Search和Favorites(收藏)。每个页面提供一种不同的在线帮助浏览方式。(一)Contents选项卡MSDN的主题组依照标题和副标题的排列方式形成一个目录表,就像一本书的目录表一样,但它是交互式的:开始,可搜索一个大概的主题,然后逐层打开越来越明确的信息路径,来寻找你感兴趣的主题。当你头脑中有一个大概的主题,而又想要看一看这个主题有哪些文档时,目录表是非常有用的。从VisualC++的Help菜单中选择Contents命令,会打开MSDN窗口,并显示目录列表。展开列表,直到找到要搜索的标题,这可以通过双击标题(通过书形图标来识别),或单击小的加号(+)按钮来完成。目录列表中的文章标题位于一连串分层的末端,每个标题通过一张折起一个角的纸形图标来区别。双击列表中的标题,会在MSDN窗口的右窗格中打开该文章。默认情况下,目录列表概括了MSDN的全部文章。你可以通过把目录表的一个分支定义为一个信息子集,来缩短显示的目录。子集允许你集中一些特殊类别的主题。例如,下面是创建一个只属于MFC参考的文章子集的步骤:

图A1—3MSDN的外观(1)从MSDN的View菜单中选择DefineSubset(定义子集)命令。

(2)在DefineSubset对话框中,通过双击名为MSDNLibraryVisualStudio6.0的标题来展开目录列表。然后,展开VisualC++Documentation(VisualC++文档)和Reference(参考)副标题,选择名为MicrosoftFoundationClassLibraryandTemplates(Microsoft基础类库和模板)的副标题,并单击Add(添加)按钮来创建子集。(3)在DefineSubset对话框的底部的编辑框中键人新子集的名字,然后单击Save和Close按钮。使用在线帮助时,如要在各个子集间切换,只需从名为ActiveSubset(有效子集)的下拉列表中选择一个子集即可。

(二)Index选项卡

搜索在线帮助时,通常首先要求助于Index选项卡,尤其当你对要寻找的主题相当清楚时。Index选项卡显示了整套MSDN文件的全面索引,就像一本书的索引一样。要找到一个索引条目,在对话框顶部的编辑框中键人关键字即可。在你键人关键字的时候,列表框中的索引自动滚动到该关键字所在的位置。

例如,MSDN索引包含条目exceptionhandling(异常处理)、handlingexceptions(处理异常)和C++exceptionhandling(C++异常处理)。因此,输入这些词条中的任意一个,都可以找到有关“异常处理”的主题。找到所要的索引条目后,双击它。如果该条目仅对应一篇文章,MSDN会立刻显示它;否则会显示TopicFound(找到的主题)对话框,其中列出了该条目指向的所有文章。通过双击列表中的标题,或选中该标题,并单击Display(显示)按钮,均可在对话框中打开一篇文章。

(三)Search选项卡

MSDN帮助文件集不仅仅是被动的,它还包含一个搜索引擎,该引擎确定哪些主题文件包含了指定的词或短语,这个过程称为全文本搜索。全文本搜索从MSDN的Search(搜索)选项卡中启动,它允许你寻找包含指定词或短语的主题。MSDN搜索引擎是非常优秀的,它能理解词的派生、通配符、布尔逻辑组合及NEAR运算符。2.2MFC简介MFC是一个编程框架,在VisualC++中开发的很多程序要用MFC提供的框架及类库。本项目中用到的socket以及应用框架就是MFC提供的。MFC(MicrosoftFoundationClassLibrary)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。MicrosoftVisualC++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。2.2.1封装构成MFC框架的是MFC类库。MFC类库是C++类库。这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,或者封装了socket数据通信功能。(1)对Win32应用程序编程接口的封装用一个C++Object来包装一个WindowsObject。例如:classCWnd是一个C++windowobject,它把Windowswindow(HWND)和Windowswindow有关的API函数封装在C++windowobject的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。

(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记WindowsClass,创建窗口,等等。MFC把许多类似的处理封装起来,替程序员完成这些工作。另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。本项目中,若通信模块直接用widowssocket的API函数实现,或截取屏幕图像,在屏幕上显示位图等模块直接用API函数实现将会非常复杂而且容易出错,有了MFC提供的类,使用起来方便了很多。(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。MFC的OLE类封装了OLEAPI大量的复杂工作,这些类提供了实现OLE的更高级接口。(4)对ODBC功能的封装以少量的能提供与ODBC之间更高级接口的C++类,封装了ODBCAPI的大量的复杂的工作,提供了一种数据库编程模式。2.2.2继承首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要的类是CObject和CCmdTarget。CObject是MFC的根类,绝大多数MFC类是其派生的,包括CCmdTarget。CObject实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCmdTarget派生。

针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;应用程序对象,基类是CwinThread;文档对象,基类是Cdocument,等等。程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。2.2.3虚拟函数和动态约束MFC以“C++”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWnd封装Windows窗口对象时,每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。

这样,通过虚拟函数和消息映射,MFC类提供了丰富的编程接口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程框架将在适当的时候、适当的地方来调用程序的代码。本书将充分的展示MFC调用虚拟函数和消息处理函数的内幕,让读者对MFC的编程接口有清晰的理解。2.2.4MFC的宏观框架体系如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板,等等。

这些模板都采用了以文档-视为中心的思想,每一个模板都包含一组特定的类。为了支持对应用程序概念的封装,MFC内部必须作大量的工作。例如,为了实现消息映射机制,MFC编程框架必须要保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对DLL编程的支持和多线程编程的支持,MFC内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序。总之,MFC封装了Win32API,OLEAPI,ODBCAPI等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。MFC开发的程序框架由以下几部分组成:(1)应用程序应用程序类派生于CWinApp。基于框架的应用程序必须有且只有一个应用程序对象,它负责应用程序的初始化、运行和结束。(2)边框窗口如果是SDI应用程序,从CFrameWnd类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接包含视窗口;如果是MDI应用程序,从CMDIFrameWnd类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接包含文档边框窗口。如果要支持工具条、状态栏,则派生的边框窗口类还要添加CToolBar和CStatusBar类型的成员变量,以及在一个OnCreate消息处理函数中初始化这两个控制窗口。边框窗口用来管理文档边框窗口、视窗口、工具条、菜单、加速键等,协调半模式状态(如上下文的帮助(SHIFT+F1模式)和打印预览)。(3)文档边框窗口文档边框窗口类从CMDIChildWnd类派生,MDI应用程序使用文档边框窗口来包含视窗口。(4)文档文档类从CDocument类派生,用来管理数据,数据的变化、存取都是通过文档实现的。视窗口通过文档对象来访问和更新数据。(5)视类视类从CView或它的派生类派生。视和文档联系在一起,在文档和用户之间起中介作用,即视在屏幕上显示文档的内容,并把用户输入转换成对文档的操作。(6)文档模板文档模板类一般不需要派生。MDI应用程序使用多文档模板类CMultiDocTemplate;SDI应用程序使用单文档模板类CSingleDocTemplate。应用程序通过文档模板类对象来管理上述对象(应用程序对象、文档对象、主边框窗口对象、文档边框窗口对象、视对象)的创建。构成应用程序的对象之间的关系大部分类都是从CObject类派生出来的;所有处理消息的类都是从CCmdTarget类派生的。如果是多文档应用程序,文档模板使用CMultiDocTemplae,主框架窗口从CMdiFarmeWnd派生,它包含工具条、状态栏和文档框架窗口。文档框架窗口从CMdiChildWnd派生,文档框架窗口包含视,视从CView或其派生类派生。2.3windowssocket简介由于因特网的普及,越来越多的程序具有了在网上与其他程序通信的功能.其实所有这些功能都建立在Winsock接口之上,应用程序执行大多数网络通信的基本对象称为套接口或软插口(Socket).为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即WindowsSockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议以及UDP/IP协议。Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。下面我对套接字做一简要介绍Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。Socket有五种不同的类型:1、流式套接字(streamsocket)

定义:#defineSOCK_STREAM1

流式套接字提供了双向、有序的、无重复的以及无记录边界的数据流服务,适合处理大量数据。它是面向联结的,必须建立数据传输链路,同时还必须对传输的数据进行验证,确保数据的准确性。因此,系统开销较大。

2、数据报套接字(datagramsocket)

定义:#defineSOCK_DGRAM2

数据报套接字也支持双向的数据流,但不保证传输数据的准确性,但保留了记录边界。由于数据报套接字是无联接的,例如广播时的联接,所以并不保证接收端是否正在侦听。数据报套接字传输效率比较高。

3、原始套接字(raw-protocolinterface)

定义:#defineSOCK_RAW3

原始套接字保存了数据包中的完整IP头,前面两种套接字只能收到用户数据。因此可以通过原始套接字对数据进行分析。

其它两种套接字不常用,这里就不介绍了。微软为VC定义了Winsock类如CAsyncSocket类和派生于CAsyncSocket的CSocket类,它们简单易用,读者朋友当然可以使用这些类来实现自己的网络程序,本系统就是用这两个类派生新类来实现广播通信的。2.3.1什麼是WindowsSocketsWindowsSockets就是我们常说的WinSock,MicrosoftWindows下的开放式网络应用程式介面。所谓「开放式」的规格就是以合作的精神发展出來的,所以WinSock是由許多网络软件厂商合作发展出來的一套标准规格。WindowsSocketsAPI(WSA)包含一组函式呼叫、资料结构、以及惯例,且提供给任何MicrosoftWindows程式一个标准的网络服务存取介面,你可以透过WindowsSocketsAPI开发各种TCP/IP、UDP/IP网络软件。WindowsSockets规格清楚地定义了网络软件与网络协定层之间的分工方式,WinSock软件的工作就是提供一個好的使用者介面以及处理资料,而WinSock协定层的工作是利用标准传输协定、驱动程式、网络煤介来收送资料。软件提供內容,协定负责收送。WinSockAPI好象一中网络的「程式插座」一樣,是一软件的标准网络介面,就如同墙上的插座是家電用品的标准电子介面一般,只要插上插座就可用了,并不需要管电是如何传输的,同样的使用WinSock也不需要知道是那家厂商所提供的TCP/IP协定层。2.3.2WinSock的历史和优点在1991年的秋天,StardustTechnologies公司的MartinHall在InterOP展览会上举行了一个非正式的聚会,这次会议的目的主要是研究在MicrosoftWindows上建立一個TCP/IP程式的标准介面的可能性。PC界的TCP/IP协定厂商代表和Windows的网络软件工程师均有出席。他们的结论是:一个标准网络API是业界成长的基础,就组成一个正式的小组,定义一组API能为开发网络程式提供更好的基本网路服务,以BerkeleySockets为基础,还增加了适用于Windows讯息架构的API,也刪除了一些不适用或很少用的API。这小组亦考虑了在不同Windows系统(16Or32位元Windows)之间的移植问题,在1992年6月,工作小组发表了1.0版的WindowsSocketsAPI规格,之后于1993年1月又发表了1.1版的规格。WindowsSockets现已获得几乎所有的网络软件厂商的支持,包括有DEC、FTPSoftware、HP、Novell、Microsoft、Sun…..等十几家。目前为止,WindowsSockets已经相当成熟了。(1)开放式的标准由于是开放式标准,不但使得技术容易取得,也便于该技术散布,TCP/IP是Internet高速成长最大的功臣,它的成功來自它的互通性(Interoperability),这个互通性是由发展过程中无数的协定层及软件工程师不断的测试与改进所获得的,这种由竞争者一起合作开发一個可让大家都受惠的产品的精神,正是开放式标准的表徵,而WinSock正是由这样的精神所开发出來的。身为一个开放式标准,WinSock允许你将不同厂商的产品混合使用,它提供一个定义完好的介面,使得一家厂商的产品可以与其他厂商的产品一起合作,它也提供不同平台的移植性,并且培养良好的竞争环境。它使得厂商与使用者双方都受惠,双方都是贏家。(2)提供了原始程式码移植性WindowsSocketsAPI是由4.3版的BerkeleySoftwareDistribution(BSD4.3)中的BerkeleySocketsAPI所衍生而来的。BSDSockets已公认是TCP/IP的标准程式介面,TCP/IP首先是在Berkeley的UNIX机器所广泛支援,而首先提出程式设计界面的就是BerkeleySockets。它从1986年起存活到现在已有许久,也已存在于许多不同平台的作业系统平台上,已有许多在UNIX上的程式设计师只要把他们的Sockets的经验和MicrosoftWindows的软件发展技术结合,就可轻易的发展WinSocks的程式,而且已有上千种软件是基于BerkeleySockets发展而成,你可以将现有的BerkeleySockets软件大部份的原始码用于WinSock上,WinSockAPI也定义了新的非同步Socket作业模式,也同时保留了现有的同步模式。(3)支援动态链接动态链接函数库(DLL)是MicrosoftWindows的主要特色,就是当程序执行时才与它们链接,这种技术有许多优点:当许多程式用同一个DLL时它们会用同一个程式码匹配,也就是说只有一份DLL程式码存于内存中,且DLL与程式本身分开,所以当你改变DLL时,不必改程序。(4)未来的发展WindowsSockets规格是一份灵活的文件,不断有人期待它的演进,1.1版由目前的许多實作和软件证明它的成功,它的新一代WinSock2也加入了许多的功能,以确保WinSock在未来成功的地位。它完整保留了1.1版的API,也加入了许多的新功能,如:它支援非同部I/O及事件物件、提供Socket分享式API,可让不同程式同时存取一个Sockets、规定了新的架构,可同时执行多种网络名称服务和传输协定等。WinSocket2.0版是1.1版后的大进步,也使得它更好用也包容更广,新增的功能也使API更具弹性也更有威力。2.3.3MFC中winsock的应用MFC中提供了两个Socket类:CAsyncSocket类和CSocket类,前者封装了WindowsSocketsAPI,后者为前者派生的高级抽象,支持同步操作。可以单独使用CSocket类,但通常是和CSocketFile类一起使用。使用MFCWinsock类添加网络通信功能就相对容易些.基本类CAsyncSocket提供全面的由事件驱动的Socket通信能力,你可以创建自己派生的Socket类来捕获和响应每个事件。CAsyncSocket类在很低级别上封装了WindowsSocketsAPI,它给我们提供了以下函数以供调用:OnAccept监听方调用此函数表对方的连接请求正等待被接受OnClose表示连接的另一端程序已关闭.OnConnect表示与另一端程

温馨提示

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

评论

0/150

提交评论