基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】

基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】

ID:429988

大小:1.16 MB

页数:45页

时间:2017-08-01

上传者:U-944
基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】_第1页
基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】_第2页
基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】_第3页
基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】_第4页
基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】_第5页
资源描述:

《基于java的多媒体展示系统设计与实现【开题报告+文献综述+毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

毕业论文本科毕业论文开题报告计算机科学与技术基于JAVA的多媒体展示系统设计与实现一、综述本课题国内外研究动态,说明选题的依据和意义1.国内外发展状况:在日常生活中,多媒体技术的多样性有利于知识的获取与保持,多媒体计算机提供的是多种感官的综合刺激。这是非常重要的。多媒体技术既能看得见,又能听得见,还能用手操作。这项技术无论是现在还是将来都充满了极大的发展空间,值得提出的是:多媒体技术与网络通信技术的结合自然对社会的进步产生深远的影响。据相关资料记载:自1995年末,在国际信息界有—件最引人注目的大事,就是美国SUN公司在Intemet上推出了“www浏览器HotJava”,这是SUN公司用Java语言开发的—种全新的可动态执行的浏览器。其突出特点是具有动画功能,可向用户提供超文本格式的图形、图像、语音、动画与卡通等多种媒体售息;并能把静态变成可动态执行的代码,这就彻底改变了Intemet浏览器只能用来查询检索Intemet网上信息的状况,为Intemet的教育直用开辟了新的广阔前景,这是因为HotJava的动态可执行特|生无异于赋给用户一种远程交互的功能。利用HotJava的这种动态可在检索到某些重要文献或教学资料时,不仅能看到静止页面还可点击某个图标或热键而看到图文声并茂的仿真实验。显然,这样一种交互功能和用第—代Intemet浏览器(如MoSaicNetscape)只能观看静态页面身效果相比是有本质区别的。目前不仅西方发达国家在大力开发基于Intemet的多媒体应用,就是台湾、香港等地区也在这方面投入相当多的人力和物力,这是多媒体教育应用中十分值得引起我们重视的一个新趋势,也是当前发展最快的—个趋势,多媒体的未来孕育着无限的生机。美国APPLE公司成立计算机多媒体实验室,主要研究计算机技术同多种信息媒体相结合,并首次推出machtion系统机。荷兰电子制造业巨头飞利浦电子公司早就开始研制五英寸的显示器。所以多媒体技术的数字化将会是未来技术的扩张主流,而作为多媒体技术赖以存在和发展的重要基石。45 毕业论文2.课题的来源及意义:多媒体的词源多媒体是90年代初使用最广泛的术语之一,它跨越了五个主要的工业范畴:计算机、远程通信、出版、家用音像电子产品和广播电影电视工业。多媒体及多媒体信息在计算机领域中,多媒体是指文(text)、图(bmp)、声(sound)、象(vidio)等这些单媒体和计算机程序融合在一起形成的信息传播媒体。用这种媒体传播的信息称为多媒体信息;能够产生、存储、传播多媒体信息的系统称为多媒体系统。我们熟悉的报纸、书本、电影电视、无线广播等,都是以它们各自的媒体进行信息传播。有些是以文字作媒体,有些是以声音作媒体,有些是以图象作媒体,有些是以文、图、声、象作媒体。但这些传播方式都不能叫作多媒体。人们接受和使用这种媒体所携带的信息是被动的,它不具有交互性。从技术角度讲,以前的声图象等媒体几乎都是以模拟信号进行存储和传播的,而多媒体却是以数字信号形式进行存储和传播的。交互性的实现在容量光盘存储器、数字信号处理技术以及高速通信网络的发展,为以数字表示的文、图、声、象与计算机程序集于一体奠定了坚实基础。多媒体系统是由多媒体硬件和多媒体软件组成的系统。多媒体硬件包括多媒体计算机(内含视频采集卡、音频采集卡等)、多媒体外设(例如摄像头、投影机、数码相机、扫描仪、大屏幕等)、多媒体传输设备(交换机、路由器等)。多媒体软件系统包括支持多媒体设备和通信的操作系统(如Windows98)、多媒体压缩软件(如WinZip)、多媒体制作工具(如Authorware)、多媒体播放软件(如QuickTime、媒体播放机MediaPlayer)、多媒体采集处理软件(如长信公司的PowerMeeting230软件)、多媒体视频监控软件(如长信公司的PowerMeeting960软件)。近两年来,全球多媒体计算机市场呈现迅速增长的趋势。尤其随着家庭PC的迅猛发展,多媒体日益受到用户的青睐,正逐渐成为电脑的必备功能。多媒体在通信系统中的应用.在编著系统中的应用.在工业领域中的应用.在医疗影像诊断系统中的应用.在教学中的应用。45 毕业论文二、课题研究的基本内容,拟解决的主要问题:内容:1.多媒体展示系统的发展现状以及研究意义。2.多媒体展示系统的可行性研究。3.多媒体展示系统的总体设计。4.多媒体展示系统的详细设计。5.多媒体展示系统的编码和单元测试。问题:1.如何在同一局域网中进行通信。2.如何将游鱼进行不间断的循环以达到网络游鱼的效果。三、研究步骤、方法及措施:首先,认真分析本模块所要达到的功能要求,做出需求分析(通过运用UML面向对象的分析方法)。然后从整体架构上进行总体设计。其次,在以上工作的基础上,开始对个功能的详细设计。找出各种类,并设计出相应的类图、顺序图、流程图等;对各功能细化并做出详细设计;最后,通过以上的分析和设计,利用java进行实际的代码编写,实现所设计的功能模块功能,达到本次课题的目标。四、参考文献[1]王景会计电算化中级培训,西南师范大学出版社2000年1期:P14-16[2]曹莹,苗志刚,赵秀明浅谈java优势[J]、中国科技信息,2006(01)[3]徐让宏Java的多线程[J]、电子与电脑,1997(08)[4]陈涵生Java技术[J]、自然杂志,1997(02)[5]赵鹏伟,刘力,姜岩java语言二维动画方法[J]、微计算机应用,2003(01)[6]范凯多媒体计算机技术及其发展前景,安徽工学院报.1994.01期[7]杨晓燕基于java的多媒体实现技术[J]、计算机工程与设计,2006(03)[8]朱福喜黄昊java项目开发与毕业设计指导.清华大学出版社,2008.6p135[9]ComputerNetworking:RobertPBlancNewYork:TheInstituteofElectricalandElectroncsEngeers,Inc,c1976p135[10]Systemsupportformultimediaapplications:anassessmentofthestateoftheartGordonS、blairgeoffcoulsonandnigaldavies45 毕业论文[11]杨宗芝如何使用java语言进行动画设计[J]、软件世界,1998(1)[12]王克宏,孙元,丁锂、JAVA语言的基本编程原理[J]、中国图象图形学报,1997(12)[13]张海藩软件工程导论.清华大学出版社,2008.2[14]吴林JAVA语言制作多媒体方法,电脑学习期刊1997年06期[15]王克宏Java的基本编程原理[J],中国图像图形学报,1997,12期45 毕业论文毕业论文文献综述计算机科学与技术基于java的多媒体展示系统设计与实现1.多媒体技术的历史及其核心技术1984年,美国苹果(Apple)公司开创了用计算机进行图像处理的先河,在世界上首次使用位图(Bitmap)概念对图像进行了描述,从而实现了对图像进行简单的处理、存储以及传送等。苹果公司对图像进行处理的计算机是该公司自行研制和开发的“苹果计算机”(Apple),其操作系统名为Macintosh,所以也有人把“苹果”计算机直接叫做Macintosh计算机。在当时,Macintosh操作系统首次采用了先进的图形用户界面,体现了全新的Windows(窗口)概念和Icon(图标)程序设计理念,并且建立了新型的图形化人机接口标准(比微软要早!)。目前,多媒体技术的发展趋势是逐渐把计算机技术、通信技术和大众传播技术融合在一起,建立更广泛意义上的多媒体平台,实现更深层次的技术支持和应用,使之与人类文明水乳交融。多媒体的主要技术:1、多媒体数据压缩编码技术2、多媒体数据存储技术3、多媒体网络与通信技术4、多媒体同步技术5、将多媒体数据压缩编码算法做到芯片中的技术6、超文本与超媒体技术7、多媒体计算机系统的软件核心-音频、视频支持系统(AVSS)2.多媒体的定义关于“多媒体”概念的标准定义还没有统一,一般理解为“多种媒体的综合”,而多媒体技术也就是“进行多种媒体综合的技术”了。这个定义道出了多媒体的实质,但还太笼统。媒体(Media)就是人与人之间实现信息交流的中介,简单地说,就是信息的载体,也称为媒介。多媒体就是多重媒体的意思,可以理解为直接作用于人感官的文字、图形、图像、动画、声音和视频等各种媒体的统称,即多种信息载体的表现形式和传递方式。“多媒体”一词源于英文Multimedia,而Multimedia是由Multiple和Media复合而成。从字面上看,多媒体是由单媒体复合而成。在计算机领域中,多媒体是指文本(Text)、音频(Audio)、图形(Gragh)、图像(Photo)、动画(Animation)、视频(Video)、等单媒体和计算机融合在一起形成的信息传播载体。3、基于java的多媒体展示系统45 毕业论文基于java的多媒体展示系统基于java语言结合多媒体技术开发的一个多媒体展示系统。多媒体技术是将计算机、电视机、录像机、录音机和游戏机等技术融为一体,形成电脑与用户之间可以相互交流的操作环境。它可以接收外部图像、声音、录像及各种媒体信息,经计算机加工处理后以图片、文字、声音、动画等多种方式输出,实现输入输出方式的多元化,改变了计算机只能输入输出文字、数据的局限。所以该系统能够将影像、声音、图形、图像、文字、文本、动画等多媒体结合一起,形成一个有机的整体,并以其大容量、交互性、内容丰富多彩、携带方便等优点有效的展示产品。4.DirectX简介Direct是直接的意思,X可理解为“很多”。在多媒体系统中,DirectX是经常遇到的一个专业术语,对多媒体技术的深入应用起到了积极的推动作用。在Windows操作系统的体系构架中,在内核与硬件之间有一层抽象层,专门对硬件进行屏蔽抽象,所以用户不再被允许对硬件进行直接访问。它是微软公司提供的一套优秀的应用程序编程接口,用于联系应用程序和硬件自身。它能增强计算机的多媒体功能,包括加速视频卡和声卡驱动程序,为不同类型的多媒体提供更好的播放效果。如全色图形、图像、三维动画、音乐以及剧场声音。DirectX组件主要包括:DirectDraw、DirectSound、DirectPlay、Direct3D、DirectInput、DirectSetup、AutoPlay等。简单来说,DirectX就是一系列的DLL,为软件开发者实现对硬件的编程控制提供了一种更高级的驱动方法。5.计算机网络技术-c/s局域网简介所谓C/S是指Client/Server(客户机、服务器),C/S系统是计算机网络(尤其是Internet)中最重要的应用技术之一,其系统结构是把一个大型的计算机应用系统变为多个能相互独立的子系统。服务器是整个应用系统资源得存储与管理中心,多台客户机各自处理相应的功能,共同实现完整的应用。C/S网络结构中至少配置一台能够提供资源共享、文件传输、网络安全与管理等功能的计算机,即服务器,通常运行windows2000server操作系统。客户机通过相应的网络硬件与服务器连接,服务器授予其一定的权限来使用网络资源,并接受服务器管理也叫“工作站”,一般采用“windows2000/XP”系统。6.多媒体技术的发展前景45 毕业论文美国、日本、欧洲等发达国家和地区都十分关注多媒体技术的开发和应用,相继成立了一些组织,专门从事多媒体技术的开发及有关标准的制定工作。近两年来,全球多媒体计算机市场呈现迅速增长的趋势。尤其随着家庭PC的迅猛发展,多媒体日益受到用户的青睐,正逐渐成为电脑的必备功能。1、多媒体在通信系统中的应用2、多媒体在编著系统中的应用3、多媒体在工业领域中的应用4、多媒体在医疗影像诊断系统中的应用5、多媒体在教学中的应用7、总结简明扼要地说,多媒体技术就是一种迅速发展的综合性电子信息技术,改善了人机交互界面,集声、文、图与一体,更接近人们自然的交流方式。而多媒体展示系统就是使用多媒体、多线程、网络通信等多种技术并结合计算机网络的信息交互原理,创造出一个有声有色、生动逼真、具有网络交互能力的系统。计算机应用的日益广泛,多媒体技术的应用势必将应用到多个行业,其产品的丰富多彩将提高人们的生活质量。45 毕业论文参考文献[1]王景会计电算化中级培训,西南师范大学出版社2000年1期:P14-16[2]曹莹,苗志刚,赵秀明、浅谈java优势[J]、中国科技信息,2006(01)[3]徐让宏、Java的多线程[J]、电子与电脑,1997(08)[4]陈涵生、Java技术[J]、自然杂志,1997(02)[5]赵鹏伟,刘力,姜岩、java语言二维动画方法[J]、微计算机应用,2003(01)[6]范凯多媒体计算机技术及其发展前景,安徽工学院报、1994、01期[7]杨晓燕、基于java的多媒体实现技术[J]、计算机工程与设计,2006(3)[8]朱福喜黄昊java项目开发与毕业设计指导、清华大学出版社,2008、6p135[9]张永强多媒体技术的发展前景,2003年3期、[10]Systemsupportformultimediaapplications:anassessmentofthestateoftheartGordonS、blairgeoffcoulsonandnigaldavies[11]杨宗芝如何使用java语言进行动画设计[J]、软件世界,1998(1)[12]王克宏,孙元,丁锂、JAVA语言的基本编程原理[J]、中国图象图形学报,1997(12)[13]ComputerNetworking:/RobertP、BlancNewYork:TheInstituteofElectricalandElectroncsEngeers,Inc,c1976p135[14]吴林JAVA语言制作多媒体方法,电脑学习期刊1997年06期[15]王克宏Java的基本编程原理[J],中国图像图形学报,1997,12期45 毕业论文本科毕业论文(20届)基于java的多媒体展示系统设计与实现-网络游鱼专业:计算机科学与技术45 毕业论文摘要随着我国国力的大大增强以及现代信息处理技术的飞速发展,多媒体与网络技术的飞速发展,多媒体的许多产品都深入到人们的日常生活中了。之前,我们熟悉的报纸、书本、电影电视、无线广播等,都是以它们各自的媒体进行信息传播。有些是以文字作媒体,有些是以声音作媒体,有些是以图象作媒体,有些是以文、图、声、象作媒体。多媒体背景下的展示设计由静态的展示转向动态的展示、由物质性向非物质性转变、由真实场景向虚拟化展示的转向、由视觉观赏向综合体验的转变。这种展示设计使得设计手段更加简便化、使其更加具有互动性、使得设计地形式更加多元化、让设计变得更人性化。多媒体系统的出现则更加形象、生动地展示产品,提高了企业的形象同时也增强了信息化的程度。基于java的多媒体系统是基于java语言结合多媒体技术开发的一个多媒体展示系统。开发本系统主要为了展示多媒体的技术,以此来表现多媒体在产品展示时显示出的独特优势。多媒体展示系统能够将影像、声音、图形、图像、文字、文本、动画等多媒体结合一起,形成一个有机的整体,并以其大容量.交互性.内容丰富多彩.携带方便等优点有效的展示产品。本系统主要是选择了java语言结合计算机网络知识、多媒体知识设计一个有声有色、生动逼真、具有网络交互能力的局域网的多媒体展示系统-网络游鱼。【关键词】多媒体展示,计算机网络,系统45 毕业论文Java-basedmultimediapresentationsystemdesignandimplementation-NetworkfishAbstractAsChina'snationalstrengthhasgreatlyincreasedandmoderninformationprocessingtechnology,therapiddevelopmentofmultimediaandtherapiddevelopmentofnetworktechnology,multimedia,manyoftheproductsdeepintothedailylifeofpeople.,Wearefamiliarwiththenewspapers,books,movies,television,radio,etc.,arebasedontheirrespectivemediaforinformationdissemination.Multimediadisplaydesignunderthebackgroundoftheshowbystaticdynamicdisplay,turnedtothenon-materialbymaterialbyrealscenechange,todisplaythesteering,virtualizationbyvisualornamentaltocomprehensiveexperiencetransformation.Thisdisplaydesignmakesthedesignmeansmoretohandle,makeitmoreinteractive,makesthedesigntoformmorediversified,letdesignbecomesmorehumane.Someofthesearewordsforthemedia,andsomearesoundforthemedia,thereareimagesforthemedia,andsomearetext,graphics,sound,asforthemedia.Theemergenceofmultimediasystemsismoreimage.Vividdemonstrationofproducts,improvethecorporateimagebutalsoenhancetheinformationlevel.Multimediasystembasedonjavajavalanguagewithmultimediatechnologybasedthedevelopmentofamultimediadisplaysystem.Developmentofthissystemismainlytodemonstratemulti-mediatechnology,inordertoshowtheperformanceofmultimediaproductstodisplayinauniqueadvantage.Multimediadisplaysystemcanwillimages,sounds,graphics,imagesandtext,thetext,animationandothermultimediatogether,forminganorganicwhole,andwithitslargecapacity.Interactivity.Colorfulcontents.Carryconvenienceetceffectivedisplayproducts.Thesystemistochoosethejavalanguagewithknowledgeofcomputernetworks.Multimediaknowledgetodesignaresoundingsuccess.Vividandlifelike.Hastheabilitytointeractwiththelocalareanetworkmulti-mediadisplaysystem-Networkfish.【Keywords】multimediapresentations,computernetworks,systems45 毕业论文目录摘要IAbstractII1.引言及相关技术简介11.1多媒体展示系统产生的背景和意义11.2多媒体展示系统的优势及发展11.3C/S与B/S的简介21.4JAVA多线程机制简介21.5网络通信-UDP简介31.6Java动画、音频的实现31.7IP多播的基本概念32.多媒体展示系统设计42.1系统需求分析42.1.1系统设计的目的42.1.2系统功能42.1.3系统组成结构62.1.4系统的技术要求62.2系统的方案设计62.2.1技术可行性62.2.2经济可行性72.2.3操作可行性72.2.4社会效益和法律可行性72.3系统的总体设计82.3.1系统的总体分析82.3.2系统模块设计92.4本章小结113.关键技术1245 毕业论文3.1Java多线程机制123.1.1.多线程的基本原理123.1.2.系统内的实现133.2IP多播153.2.1IP多播机制153.2.2.系统内的实现173.3多线程的同步控制173.3.1原理介绍173.3.2系统内实现184.多媒体展示系统的实现194.1网络通信的模块194.1.1网络通信原理194.1.2系统中具体实现194.2动画模块的实现204.2.1.动画模块实现原理204.2.2系统内的实现214.3音频模块的实现224.3.1音频模块的原理224.3.2系统内的实现234.4客户信息列表实现235.系统测试255.1测试策略知识简介255.2测试用例的设计和结果分析255.2.1动画功能测试255.2.2音乐功能测试265.2.3网络功能测试265.3本章小结276.总结与展望28参考文献2945 毕业论文1.引言及相关技术简介1.1多媒体展示系统产生的背景和意义多媒体[7]的词源多媒体是90年代初使用最广泛的术语之一,它跨越了五个主要的工业范畴:计算机.远程通信.出版.家用音像电子产品和广播电影电视工业。多媒体及多媒体信息在计算机领域中,多媒体是指文(text)、图(bmp)、声(sound)、象(vidio)等这些单媒体和计算机程序融合在一起形成的信息传播媒体。用这种媒体传播的信息称为多媒体信息。能够产生、存储、传播多媒体信息的系统称为多媒体系统。我们熟悉的报纸、书本、电影电视、无线广播等,都是以它们各自的媒体进行信息传播。有些是以文字作媒体,有些是以声音作媒体,有些是以图象作媒体,有些是以文、图、声、象作媒体。但这些传播方式都不能叫作多媒体。人们接受和使用这种媒体所携带的信息是被动的,它不具有交互性。从技术角度讲,以前的声图象等媒体几乎都是以模拟信号进行存储和传播的,而多媒体却是以数字信号形式进行存储和传播的。交互性的实现在容量光盘存储器、数字信号处理技术以及高速通信网络的发展,为以数字表示的文、图、声、象与计算机程序集于一体奠定了坚实基础。多媒体系统是由多媒体硬件和多媒体软件组成的系统。多媒体硬件包括多媒体计算机(内含视频采集卡、音频采集卡等)、多媒体外设(例如摄像头、投影机、数码相机、扫描仪、大屏幕等)、多媒体传输设备(交换机、路由器等)。多媒体软件系统包括支持多媒体设备和通信的操作系统(如Windows98)、多媒体压缩软件(如WinZip)、多媒体制作工具(如Authorware)、多媒体播放软件(如QuickTime、媒体播放机MediaPlayer)、多媒体采集处理软件(如长信公司的PowerMeeting230软件)、多媒体视频监控软件(如长信公司的PowerMeeting960软件)。近两年来,全球多媒体计算机市场呈现迅速增长的趋势。尤其随着家庭PC的迅猛发展,多媒体日益受到用户的青睐,正逐渐成为电脑的必备功能。多媒体在通信系统中的应用、在编著系统中的应用.在工业领域中的应用、在医疗影像诊断系统中的应用、在教学中的应用。1.2多媒体展示系统的优势及发展日常生活中,多媒体技术的多样性有利于知识的获取与保持,多媒体计算机提供的是多种感官的综合刺激。这是非常重要的。多媒体技术既能看得见,又能听得见,还能用手操作。这项技术无论是现在还是将来都充满了极大的发展空间,值得提出的是:多媒体技术与网络通信技术的结合自然对社会的进步产生深远的影响。45 毕业论文目前不仅西方发达国家在大力开发基于Intemet的多媒体应用,就是台湾、香港等地区也在这方面投入相当多的人力和物力,这是多媒体教育应用中十分值得引起我们重视的一个新趋势,也是当前发展最快的—个趋势,多媒体的未来孕育着无限的生机。美国APPLE公司成立计算机多媒体实验室,主要研究计算机技术同多种信息媒体相结合,并首次推出machtion系统机。荷兰电子制造业巨头飞利浦电子公司早就开始研制五英寸的显示器。所以多媒体技术的数字化将会是未来技术的扩张主流,而作为多媒体技术赖以存在和发展的重要基石。近两年来,全球多媒体计算机市场呈现迅速增长的趋势。尤其随着家庭PC的迅猛发展,多媒体日益受到用户的青睐,正逐渐成为电脑的必备功能。1.多媒体在通信系统中的应用2.多媒体在编著系统中的应用3.多媒体在工业领域中的应用4.多媒体在医疗影像诊断系统中的应用5.多媒体在教学中的应用1.3C/S与B/S的简介C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。B/S(即浏览器/服务器模式)是随着Internet技术的兴起,对C/S结构的一种改进。在这种结构下,软件应用的业务逻辑完全在应用服务器端实现,用户表现完全在Web服务器实现,客户端只需要浏览器即可进行业务处理,是一种全新的软件系统构造技术。这种结构更成为当今应用软件的首选体系结构。1.4JAVA多线程机制简介线程[3]是程序执行的基本单位,通过线程可以实现程序执行的并发性,独立性和异步性。所谓线程,其实与进程相似,是比一个进程更小的执行单位。多线程就是将一个程序任务分成几个可以同时并发执行的子任务。而一个并行程序由多个共享内存的并行任务组成,数据的交换通过隐含地使用共享数据来完成。此编程模式使得程序员能够指定应用程序包含多个执行的线程,每个线程均设计成具有部分程序功能,并且能与其他线程并发执行。线程间能够可以共享相同的内存单元(代码和数据),从而实现数据交换、实时通信和必要的同步操作。也就是说让cpu在同一个时间之内执行一个程序中的好几个程序段来完成工作。Java工作机制图1-1:45 毕业论文JAVA程序线程1线程2......线程nJVM图1-1Java工作机制1.5网络通信-UDP简介Udp是整个网络体系结构传输层的协议,它是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放),如此就可以减少开销和发送数据的时延,同样它进行最大程度的交付,也就是说不保证可靠的交付,这样就造成主机不必要维持复杂的连接状态表。传输时先将传输的数据定义成数据报,在数据报中指明数据所要到达的socket,最后发送报文。Udp是面向报文的,照常发送应用层的报文长度,它没有拥塞控制。其协议支持一对一、一对多、多对多的交互通信。1.6Java动画、音频的实现动画的原理[5]是快速显示一个动作的一系列静态分解图片,以产生该动作进行的视觉效果为创造一个动画,首先必须作出一系列画片,可以用循环显示的形式,以保证用较少的图片演示较长的时间。最后,一般做法是创建一个线程,把图片演示放入线程中。Java语言动画技术的处理模式一般为在屏幕上联系刷新显示一组相关的图形,在显示每一个图形时需要间隔一定的时间,一般计算机动画每秒显示10~20幅图形,这样的显示方式利用人眼视觉的暂留现象使人观看屏幕时感觉好像画面中的物体在不断地连续运动而形成动画。声音在java语言中是作为一种媒体来处理的,其声音文件或应用于网络中的声音数据都是以数据流的形式出现的,在java多媒体应用技术中,java为处理音频数据流提供了专门的API,通过这些API可以实现音频的采集、编码、传输、播放等处理。1.7IP多播的基本概念45 毕业论文IP多播(多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。IP多播是指一个源点向多个终点发送消息,即一对多通信,它是节省网络带宽的有效方法之一。IP广播是向所有的主机发送信息,而组播(多播也称组播)就是向特定的某些主机发送数据。多播能使一个或多个多播源只把数据包发送给特定的多播组,而只有加入该多播组的主机才能接收到数据包。多播仅应用于UDP。2.多媒体展示系统设计2.1系统需求分析2.1.1系统设计的目的多媒体技术的迅速发展,无疑让现代展示设计有了一个渐进的、更为丰富的内涵。在展示设计中,能够在展示空间中充当场景、模拟实物、把版面文字、展品、灯光、音乐协调成为一个整体关系,这样提高了信息传递的效率,也易于被文化和不同年龄层次的观赏者所接受。而网络平台无疑增加了这个展示空间,成为了企业展示产品的重要营销手段。让参观者的身体也参与到接受信息中去,使其得到情感和心灵被打动。本系统就是着力于这个概念,利用多媒体技术并结合java语言与计算机网络等知识,设计一个有声有色.生动逼真.具有网络交互能力的局域网的多媒体展示系统-网络游鱼。以此作为一个基础,来为更多产品的多媒体展示积累经验。2.1.2系统功能系统主要实现以下三个方面功能需求:网络通信功能、多媒体功能、主程序和网络通信端的接口功能。根据需求分析,本系统的开发应该分为服务器端和客户端两部分。(一)网络通信功能1)服务器端服务器端得功能分为两大块,创建、维护“客户信息表”和转发各客户端发送来的通信数据,服务器创建时初始化一个空链表,用以存储连接到服务器端得客户信息。并根据当前客户端信息,分配ID号并将其加入到客户信息列表中,然后发送回执消息给客户端。当收到某个客户端的cutlink消息后,根据客户端的信息,从客户信息表中删除该客户端对应的项。当服务器收到客户端发送来的通信数据后,根据ID号查找客户信息列表中的位置,根据位置信息将数据转发到相应的客户端。45 毕业论文由上面的分析得知,服务器的状态由开始的初始化运行后,或者处于连接客户端的状态或者是断开的状态,由此得出图2-1:服务器端状态转换图图2-1服务器端状态转换图2)客户端每个客户端启动后向局域网发送request多播消息,如果连接成功接收消息,反之返回连接失败的消息以单机方式运行。连接成功后在主程序需要与网络上相邻节点通信时,客户端要将需要发送的消息封装发送到服务器,以便服务器端转发。还要建立一个监听线程,负责监听服务器端转发来的通信数据,并交给主程序处理。如果连接失败,则返回主程序连接失败的消息,使主程序单机运行。客户端状态转换图2-2:客户机先进行初始化,然后进行连接服务器端,如果连接成功,便能够与服务器端进行通信,然后判断本机上由鱼的状态,适时地进行重绘面板更新游鱼的效果,想退出时进行断开连接,退出与服务器的连接。图2-2客户端状态转换图(二)多媒体功能1)动画的处理主要涉及到java图形、图像的处理、java多线程等。具体的功能:主程序启动后,首先加载程序背景图片-海底世界的画面,然后初始化几条鱼,每条鱼都是一个线程对象,每条鱼对象的属性包括位置、游动方向、速度等。根据这些信息来实现游鱼的动画效果。2)声音的处理45 毕业论文使用java音频文件的播放实现。当主程序选择加载背景音乐后实现背景音乐的播放;选择暂停键的时候实现音乐的暂停。(三)主程序和网络通信端的接口功能当主程序需要连接到一个网络时启动客户端,并注册到服务器端;连接网络后,当某条鱼游到屏幕的边界后从本地删除,然后将此游鱼的数据包封装好,发送给服务器端,由其转发到相邻的目的主机;客户端主机收到服务器转发的数据报后,将其解封得到其游鱼信息。然后调用主程序重新构造一个新的游鱼对象。2.1.3系统组成结构系统的组成结构如图2-3所示:图2-3系统的组成结构图系统的组成主要包括三台以上的计算机,其中任何一台可以作为服务器。由于本系统较小,采取使用交换机来构成一个局域网。2.1.4系统的技术要求系统的性能在技术上存在一定的要求。·可靠性。系统的操作系统和应用软件应当能确保系统能够长期、连续和可靠地工作。·交互性。参观者的操作在一定程度上以及一定范围内,对系统具有一定的控制和影响。·趣味性。系统具有非常强的可视化效果,吸引人参观·美观性。系统的画面应当具备图文并茂的动态效果·实时性。系统对参观者功能进行选择后得到及时的响应2.2系统的方案设计系统的功能实现有很多的方案可供选择。除了系统的方案设计一般应当考虑到下面的几个方面:45 毕业论文2.2.1技术可行性选择一种高级语言(java,c,c++,c#..),在人机交互方面,设计图形界面时选择java比较好,而那些功能也基本实现。数据库方面选择access就行了,因为本次设计只是一个小的系统,无需选用更复杂的。本次设计主要是在windows系列下的系统进行开发,用户只要在本地计算机上实现操作,只要是安装了本软件的计算机就行。java的优点如下:Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。它的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。综上面所述,本系统采用java语言进行开发,技术是可行的。2.2.2经济可行性从经济效益上考虑,本系统的开发完全使用开源软件,相对来说开发成本比较低,而且系统完成的效果应该比较明显,可广泛用于公司产品的展示方面。该系统如果完成可代替原先许多公司采用的简单纸张等二维宣传模式,方便公司进行产品的宣传与销售,这样就大幅提高了产品的可视化程度。同时,在这种情况下公司可以大量减少人员的数量和工作量,这将为公司省下许多不必要的支出。网络联结,即各种媒体信息是通过网络传输的,而不是借助CD-ROM等存储载体来传递的,增加了宣传力度与范围面积,而且在交互式方面,已不是简单的单向或双向传输,增强了交互能力,所以从经济可行性上考虑该系统也是完全可行的。2.2.3操作可行性目前许多的小公司还是采用手工处理方式进行操作,不但工作效率低、处理速度慢,而且浪费时间金钱。而本系统采用面向对象的设计模式,将各类封装组合形成要求的功能,主要起个展示作品的效果,所以不怎么需要用户操作。该系统可以运行在任何系统下,拥有很好的移植性,所以用户可以很轻松的看到本系统所展示的作品。45 毕业论文2.2.4社会效益和法律可行性随着科技的发展,公司规模逐渐庞大,信息的更新速度很快,然而竞争也是相当大,所以以网络的便捷来宣传产品,那将更加有吸引力,在市场上更具有竞争力。现有的手工操作方式已经无法满足需求,且该方式工作效率低、处理速度慢、内容繁琐,让顾客不能够信任该公司产品。本系统的发展很好的解决了上诉问题,让顾客耳目一新,能形象.生动.逼真地展示产品,并为管理者提供了便捷,提高了公司的集体形象,具有非常广的社会效益。该系统完全采用开源的软件,并无任何抄袭现象,投入使用阶段也不会产生任何法律纠纷,故该系统从法律上来说也是可行的。综上所诉,该系统无论从技术、经济、操作、社会效益及法律等方面考虑都是完全可行的。2.3系统的总体设计2.3.1系统的总体分析首先明确系统实现流程以及各个模块的功能。此外,还应当确定各个模块之间的接口关系。系统设计确定实现系统的策略和目标系统的高层结构。根据前面对系统功能需求的分析,可将系统分为以下几个功能模块,即动画实现、网络通信、音乐的控制。我们可以将功能模块如下图2-4所示:图2-4系统的总体功能结构层次图45 毕业论文从系统的结构层次图分析,系统可以分为两个部分:服务器端和客户端。由需求分析可知道,服务器端主要负责网络通信功能模块的实现,客户端负责动画的实现和音乐播放模块的实现。服务器端和客户端通过网络通信端的接口实现。系统结构框图如下2.5:图2-5系统结构框图结合系统分析,由此可见客户端是该系统的核心,负责鱼图像的游动效果的渲染,实现面板图像的重绘。并且还包括背景图片的加载和背景音乐的播放与关闭功能,起到一个响应用户操作的一个控制界面。而服务器端是负责数据的采集、转发,起到一个数据中转站的功能,并且还涉及到维护客户机的IP等信息列表的维护。根据系统运行的环境,显然系统应当是一个不断循环的程序,客户机不断捕捉参观者的操作,也不断的捕捉游鱼的信息,实现相关的响应动作。系统实现的流程如图2-6:图2-6系统开发流程图45 毕业论文2.3.2系统模块设计为了系统的后期维护和功能升级,可扩展性是任何一个大规模系统的基本要求,这也就要求在系统设计的时候遵循模块化设计思想。本系统采用面向对象的方法学开放,而该方法本身就具有模块独立性好的特点。正是根据这一思想从实现功能的不同将系统划分为多个子所以将系统划分为几个子模块能够使得模块的耦合性尽可能小,确保各子模块之间既相互独立,又相互联系。这样实现的系统有易于维护和扩充。将来如果业务需要,还可以随时添加新的功能模块实现系统的功能升级。而且在开发工程中,也能够使开发人员分工明确,确保系统的稳定性、兼容性、开放性。功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。功能模型图2-7:图2-7功能模型图在软件模块的划分过程中,我们主要是依据软件所完成的基本功能的不同来划分子模块,由以上的分析得出本系统的由以下几个模块组成:动画模块、程序控制模块、网络通信模块、音效模块。这些模块之间功能上相互独立,但彼此之间又有紧密的联系,都有自己的功能。动画模块主要负责动画渲染效果、画面的更新,使用的图像是位图文件。多媒体的画面直接影响到系统的趣味性、可玩性。在色彩上的合理运用对画面的设计至关重要。色彩是光在人脑中的感觉,它有亮度、色相和纯度三个要素。以及画面的卡通化也会增强主题气氛的效果,增加作品的感染力。本系统比较简单,只选择一幅背景图片,以及色彩也是固定的,相对来说不怎么具备多姿多彩。程序控制模块主要负责对程序的流程进行控制。本模块主要是负责服务器端的初始化工作和对用户输入进行后程序控制。主要是完成客户端的退出和初始化以及服务器端的相关操作,以及对用户的输入进行响应,使得系统能够稳定的工作。45 毕业论文音效模块主要是为应用程序提供声音。在多媒体系统中,除了视觉信息外,最重要的就是声音。多媒体中的声音能够极大地提高多媒体的娱乐性,让人贴近逼真的虚拟环境。声音可以为参观者提供不同的心情和意境,从而有效地增加系统地可感知度。此外,声音能够从听觉器官上引导参观者进入多媒体的意境。在系统中使用的声音格式文件是wav格式。网络通信模块主要负责服务器端和数据端数据通信。该模块主要完成客户端寻找服务器的功能,以及服务器端的数据转发功能,其中包括客户端接收和发送数据报给服务器端的工作。服务器端与客户端连接成功后,服务器端利用java.util.linkedlist包中的linkedlist类来维护客户端的列表信息。而客户端与服务器端则是利用UDP协议来进行无连接的数据传输。这便涉及到一个服务器的寻找问题。本系统利用IP多播来解决这个问题,在关键技术中提具体解释该机制。2.4本章小结本章详细介绍了系统的目的以及功能,阐述了系统的操作流程。再者,对实现系统的可能的各个方案进行了选择。从系统的稳定性、实现难度、开发周期和系统寿命等方面确定了系统的最终方案路线。在明确系统的实现方案后,根据系统设计的可维护性、可扩展性等设计思想,搭建了系统的实现框架,并详细分析了系统的模块结构以及模块功能。在对系统进行了详细的分析之后,下一章本文将讨论系统实现所用到的关键技术。45 毕业论文45 毕业论文3.关键技术3.1Java多线程机制3.1.1.多线程的基本原理(一)每个线程都有各自的特定状态和给定的优先级。线程具有以下5种状态。·新生状态(NEW):线程已被创建但尚未执行。当线程处于此状态时,还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常。·可执行状态(Runnable):一个线程已实例化并启动,JVM可以分配时间给这个线程,以使其在CPU上实行。·运行态(Running):一个线程占用着处理机正在执行其代码。对于只有一个处理机的计算机而言,任何时刻只能有一个线程占用处理机。·阻塞状态(Blocked):一个线程已实例化并启动,处于可运行状态,只是暂时不能执行处于等待状态。当某些事件发生时线程进入阻塞状态,如wait()方法被调用,线程处于I/O等待等。·死亡状态(Dead):一个线程执行结束不能再被启动。线程间的各个状态之间的转换如图3-1:图3-1线程状态转换图Java语言中通过run()方法为线程指明要完成的任务,而实现多线程的方法有两种,一种是继承java.lang包中的Thread类,另一种是用户在定义自己的类中实现Runnable接口。两种技术可为线程提供run()方法。无论采用哪种途径,程序员控制的关键性操作有两个:①定义用户线程的操作,即定义用户线程的run()方法;②在适当的时候建立用户线程实例。(1)继承Thread类并覆盖run方法45 毕业论文Java提供了线程类Thread来创建线程,创建线程与创建普通的类对象的操作相同,通过定义一个Thread类的子类,在该子类中重写run()方法,这样的Thread子类的实例对象就是一个线程。事实上,启动线程也就是启动线程的run()方法,而Thread类中的run方法没有任何操作语句,所以这个线程没有任何操作。要使线程实现预定功能必须定义自己的run()方法。设计了线程体的run()方法后启动线程就启动了子类中重写的run()方法。(2)通过实现Runnable接口的类调用run()方法Java中的接口与类非常相似,主要用来实现特殊功能,如复杂关系的多重继承功能等,Runnable接口中定义了抽象的run()方法。为了实现一个线程需要定义一个实现Runnable()接口的类,在该类中定义自己的run()方法,然后以该类的实例对象this为参数调用Thread类的构造方法来创建一个线程。定义好run()方法之后,当用户程序需要建立新线程时,只要以这个实现了run()方法的类为参数创建系统类Thead的对象,就可以把用户实现的run()方法继承过来。利用多线程可以使整个程序结构更加松散耦合,使资源使用更加平衡,用户使用更加方便。(二)线程调度和优先级处于就绪状态的线程首先进入就绪队列排队等候处理器资源,同一时刻在就绪队列中的线程可能有多个,它们各自任务的轻重缓急程度不同,为了使线程能够合理得到运行机会多线程系统会给每一个线程自动分配一个线程的优先级,任务较紧急重要的线程,其优先级就较高;相反则较低。在线程排队时,优先级高的线程可以优先享用到处理器资源;而优先级较低的线程则只能等到等高优先级线程执行完毕之后才能获得处理器资源。对于优先级相同的线程,则遵循队列的“先进先出”的原则,即先进入就绪状态排队的线程被优先分配到处理器资源,随后才为后者服务。当一个在就绪队列中排队的线程被分配到处理器资源而进入运行状态之后,这个线程就称为是被“调度”或被线程调度管理器选中了。3.1.2.系统内的实现(1)系统建模在应用程序完成一些必要的初始化工作(例如创建窗口)后,应当首先通过调用该主类创建其需要的主要对象。本系统的客户端初始化后,主面板类应该为每条鱼实例化成一个对象,因为本系统中鱼就是其客户端的主题的对象。通过该对象再创建其它相关对象,该对象具有数据转发和发送等功能,那衍射出其他的几个类对象。由于其要进行数据的传递,那必然要在服务器端进行数据的传递,服务器要正确的传递数据,需在其主机上建立一个对象信息的管理。由服务器的功能得知其他的类对象。45 毕业论文本系统结合多线程机制的有关知识,由于系统中游鱼的动态性,每个游鱼有一定的生命周期,所以选用线程来实现游鱼的动态效果。每个游鱼用一个线程类对象实现,该类继承于Thread类,每个游鱼初始化后就表示一个线程对象产生并开始运行。通过随机数的产生作为坐标来掌握游鱼的游动方向等现象。由于本系统有音乐播放的功能,所以每台客户机随之也必须继承Thread类。当游鱼游出边界时,在其他相邻客户机上出现,从而产生一个网络游鱼的效果。当出现这状况,为了能实现客户端能够将多条鱼的数据信息进行传输,这就必须要求它也必须继承Thread类。Fish类中主要是利用run()方法来实现鱼对象游动位置计算、面板类重绘、动画效果。receiver类主要是利用run()方法来实现从服务器上数据的接收。至于musicplay类主要是实现音乐的播放效果。由客户端的fishclient来调用send方法来发送通信数据给服务器。服务器端通过构造客户信息对象来维护列表信息,并转发各客户端信息,由目的主机来调用fishclient将对象加入到面板类中来重新构建fish对象。客户端主类利用面板类来重新构造游鱼信息来实现动画效果。初始化后建立各菜单项,并增加消息响应。新建客户端后,通过新建多播来查找服务器,成功后新建receiver对象来转发数据。类继承关系图:图3-2类继承关系图图3-3类继承关系图(2)确定关联服务器端:FishServer类被定义为服务器端的主类,当客户端发来信息时,主类应该利用ClientInfo类实例化一个对象来记录其客户端信息,并利用CLientLIst类将其加入到客户信息列表中。主类还应该创建Transmitter类实现转发各个客户端之间的游鱼信息的传递。Transmitter类负责使用FishInfo类中的游鱼信息。客户端:swimFISH类应该是主类,因其负责连接到服务器、退出程序等。swimFISH类应该利用FISHpanel类实现网络游鱼效果。FISHpanel类利用NetState类判断连接服务器是否成功。FISHpanel类使用FISH类初始化游鱼对象。FISHclient45 毕业论文类利用sender类、receiver类来收发信息。swimFISH类使用musicplay类播放音乐。swimFISH类使用FISHclient类实例化对象-游鱼。得到各个类的关系图:图3-4类关系图图3-5类关系图3.2IP多播3.2.1IP多播机制IP多播是指在IP网络中将数据包以无连接的包交换方式传送到网络中的某个确定节点子集,这个子集称为多播组。发送主机可以不属于多播组,也不一定知道这个多播组中都包括哪些成员。一个多播组的成员是随时变动的,一台主机可以随时加入或离开多播组,多播组成员的数目和所在的地理位置也不受限制,一台主机也可以属于几个多播组。此外,45 毕业论文不属于某一个多播组的主机也可以向该多播组发送数据包。局域网中的多播使用硬件实现。当以太网上的PC机收到一个帧时,用PC机网卡硬件就可以判断出该帧的目的地址是否属于以下三种地址之一。·本网卡的硬件地址(单播)。·全1的目的地址(广播)。·地址的第一个字节的最低位为1的组地址,且本站已加入该组(多播)。如果是以上三种地址之一则收下该帧,否则丢弃。广播和多播仅应用于UDP,为了弄清广播和多播的区别,需要了解主机对由信道传送帧的过滤过程:首先查看由信道传送过来的帧并确定是否接受该帧。若确定接收后就将它传往设备驱动程序(通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧)。设备驱动程序收到网卡传送过来的帧以后将进行另外的帧过滤。判断帧类型中是否指定了要使用的协议,并进行多播过滤来检测该主机是否属于多播地址说明的多播组。设备驱动程序随后将数据帧传送给下一层,如当帧类型指定为IP数据报时就传往IP层。IP层根据IP地址中的源地址和目的地址进行更多的过滤检测。如果正常就将数据报传送给下一层。每次UDP收到由IP层传送来的数据报就根据目的端口号或源端口号进行数据报过滤。如果当前没有进程使用该目的端口号就丢弃该数据报并产生一个ICMP不可达报文(TCP根据它的端口号进行相似的过滤)。如果UDP数据报存在检验和错将被丢弃。协议栈各层对收到帧的过滤流程图如下:图3-6协议栈各层对收到帧的过滤过程(1)IP多播的特点(1)D类地址IP使用D类地址支持多播,D类地址的前缀是1110,因而地址范围是224.0.0.0~239.255.255.255。每一个D类地址标志一组主机。在D类地址中可以用来标志各个主机组的共有28bit,因此可以标志超过2亿5千万个多播组。当某个进程向某个D类地址发送数据报时,即向改组的每一个主机发送同样的数据报,但都是“尽最大努力交付”45 毕业论文,因而某些成员可能收不到这个数据报。多播地址只能用于目的地址,而不能用于源地址。(2)永久组一些多播组地址被IANA(互联网数字分配机构)确定为知名地址,也被当作永久主机组。例如,224.0.0.1代表该子网内的所有系统组,224.0.0.2代表该子网内的所有路由器组。(3)动态的组成员主机组成员是动态的,临时组地址则是在每一次使用前都必须创建主机组。一个进程可以请求其主机参加某个特定的组或在任意时刻退出该组。当一个主机新加入某一个主机组时,它就向多播地址中的所有主机发送报文、声明其组员关系。(4)使用硬件进行多播由于有些网络是以太网,以太网自身就具有硬件多播功能,因此当多播数据报传送到这些以太网时,以太网就利用硬件交付给属于该组成员的主机。这样的主机在一个以太网中可能有好多个。硬件组播(multicasting)是一种多点投递的形式,它使用硬件技术,通过使用大量组播地址来通信。当某一组机器需要通信时,选择一个组播地址,并配置好相应的网络接口硬件,识别组播地址,从而收到该组播地址上分组的拷贝。IPV4的以太网中只有23位能用作多播地址,并与D类IP建立一一对应的关系。D类地址可分配的有28位,所以前5位不能建立一一对应的映射关系。由于多播IP地址与以太网多播地址的映射关系不是唯一的,因此到了IP层还需要利用软件进行过滤,舍弃不是本机要收到的数据报。使用这种方式能够在局域网内的任意一台主机上建立服务器。当客户端建立后无须知道服务器地址,只须发送多播消息给一个多播组即可找到服务器,并建立连接。除此之外采用UDP方式能有效减少系统资源的损耗。3.2.2.系统内的实现(1)实现多播使用多播的目的是将服务器绑定到一个多播组,当网络上的客户端需要连接到服务器时,直接使用多播组地址为目的地址发送连接消息,收到的响应后即可得到服务器地址。首先,需要定义一个多播套接字,定义代码如下:MulticastSocketSocket=newMulticastSocket(5003);然后将服务器绑定到一个多播地址,假如230.0.0.2为多播地址,则具体方法如下:InetAddressaddress=InetAddress·getBYName("230.0.0.2");Socket·joinGroup(address);45 毕业论文上述代码的第一句表示得到230.0.0.2多播地址信息,第二句表示将此套接字绑定到多播组上。本系统通过以上机制,将服务器绑定到一个多播组,然后客户端以此为目的IP地址来发送多播消息,来确定服务器的位置,即可得到服务器的IP地址。这样就可以减少网络资源的浪费,又可以随便设置局域网内的任何一台主机为服务器,而且本局域网内使用的是硬件发送多播的模式,都是主机自带的硬件设置,能够减少硬件资源。3.3多线程的同步控制3.3.1原理介绍在多线程机制中,每一个运行的程序可能包括多个独立运行的线程,那么两个线程间就可能存在多个线程共享数据操作问题。当一个线程对共享数据操作时,就不允许其他线程进行打断,保持操作的原子性。否则就会破坏数据完整性。所以就必须保持各线程间的互斥关系,来保证一个完整的操作动作不被打断,这就是所谓的同步概念。如果不保持这关系,势必会引发两个并发线程共享内存变量的错误。在java语言中使用synchronized关键字来标识同步资源,该资源可以为一种类型的数据,也就是对象,也可以说是一个共用的方法,更可以为一段代码断。其用法为:·synchronized(对象){临界区代码段}对象为多线程共同操作的公共变量,即为需锁定的临界资源。·publicsynchronized返回类型方法名(){方法体}Synchronized的功能就是先判断对象或方法的互斥锁是否存在,存在就执行方法体。若不在,就进入等待状态,直到获得互斥锁。3.3.2系统内实现考虑到本系统中存在多线程机制,在客户端的实现中发送数据时多线程存在共享发送方法的情况,而发送数据报时有可能产生端口发送的延误。根据其原理知识,就必须将其设置为临界区资源,以免引发数据传递的问题。其代码:privatesynchronizedvoidsend(){try{DatagramSocketsocket;DatagramPacketpacket;ByteArrayOutputStreambyteStream=newByteArrayOutputStream(500);}45 毕业论文4.多媒体展示系统的实现根据本文前面的分析,系统在功能上可以分成下面的几个模块:网络通信模块、音效模块、动画模块以及程序控制模块。下面就这些模块的实现原理和实现机制进行详细的阐述。4.1网络通信的模块4.1.1网络通信原理网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通信。在网络编程中有三个主要的问题:·如何准确定位网络上的一台或多台主机。·如何进行连接。·连接后如何可靠高效地进行数据传输。45 毕业论文要用c/s模式实现网络通信就要先建立客户端和服务器端。客户端和服务器端分工明确,客户端负责向服务器端发送通信数据,服务器端则要对接收到的数据进行处理,然后转发到相应的客服端。用户数据包传输协议(udp)是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议是IP协议与上层协议的接口,适用于运行在网络中的不同主机上,也适用于分别运行在同一台设备上的多个应用程序中。由于大多数网络应用程序都在不同的机器上运行,计算机上必须能够确保目的主机上的软件程序能从源地址机器处获得数据包,并且源地址机器能够收到正确的回复。与TCP不同,UDP并不提供对IP协议的可靠机制.流控制以及错误恢复等功能。由于UDP比较简单,UDP头包含很少的字节,所以比TCP的负载消耗少。UDP适用于不需要TCP可靠机制的情形,如当高层协议或应用程序提供错误和流控制功能的时候。UDP是传输层协议,服务于很多知名应用层协议,包括网络文件系统.简单网络管理协议.域名系统以及简单的文件传输系统。4.1.2系统中具体实现数据报通信的基本模式:首先将数据打包,形成数据包,然后将数据包发往目的地;其次是接收端收到别人发来的数据包,然后查看内容;Java语言中用于无连接的数据报通信使用java类库中的java.net包中的两个类DatagramSocket和DatagramPacket。其中,DatagramPacket类用于打包,DatagramSocket类用于实现数据报的发送和接收。数据转发过程-程序流程图如图3-7:图3-7服务器端数据转发过程45 毕业论文·发送数据报获取目的地址后构造数据包,并使用socket发送:InetAddressaddress=packet.getaddress();packet=newDatagramPacket(sendBuf,sendBuf.lengthser_inet,port);Socket.send(packet);·接收数据报新建一个套接字和一个存放数据的byte[]数组后构造数据包并调用套接字的receive方法接收数据。DatagramPacketsocket=newDatagramPacket(port);bytebuffer[]=newbyte[256];DatagramPacketPacket=newDatagramPacket(buffer,buffer.length);Socket.receive(Packet);4.2动画模块的实现4.2.1.动画模块实现原理通常的java动画程序的主体是一个动画循环线程,该线程在休眠一段时间后重新刷新显示一次屏幕,每次显示在屏幕上的数据则是一组已经生成的具有相关性的图形或图像数据。动画的制作一般分为4部分:创建线程、装入动画数据、图像文件的显示、动画放映速度的控制。(1)创建线程每一个动画都是一个单独的动画线程,所以以单线程形式来运行从而不会影响整个动画效果。(2)装入动画数据在JAVA中,支持GIF和JPEG两种图象文件格式的获取和显示。图象文件通过调用geilmage获取,可以从WWW服务器获取,也可以从本地主机获取,需要指定URL和文件名。Imagegeilmage(URLurl.Stringstringname)一般使用数组来存放这些图像,这样便于用一个循环将图像全部载入。(3)图像文件的显示图象文件的显示通过调用Graphics类的drawlmage(im[n],ex,ey,this)实现。im[n]是Image类生成的对象,ex,ey是图象的坐标。This重绘图像区域的类对象。(4)动画放映速度的控制45 毕业论文动画的放映速度决定了动画的质量(如平滑度),较快的放映速度有较好的连贯性,可以使用一个线程管理动画的放映速度。帧速度对于动画的感官效果起决定性作用,如果太慢会使动画看起来闪烁,如果太快将看不到帧之间的变化,只能看到最后一帧,因此在显示相连的帧图像时需要留有空白空间。利用Thread.sleep(delay_time)来达到延时效果。(5)装人动画数据的监督与控制由于多线程的应用,在动画数据装入过程中可能会执行动画的放映,导致动画数据未装入完就执行动画的显示。为了解决这个问题,要求利用MediaTracker实现对装入动画数据进行监督与控制,直到所有图象都装入后再显示动画。4.2.2系统内的实现Java中的动画是静止图像的快速显示,通过每秒30帧左右的图像左右的图像显示并利用人眼的暂停效应,产生一连串的动作。制作动画必须先建立图形图像序列,然后以一定的速度显示该序列。(1)创建动画线程每一个动画程序都需要一个单独的动画线程,这是为了避免动画对其他事件产生影响,此线程一般在start()方法中创建。publicvoidstart(){running=true;super.start();}(2)载入图像数据下面的代码是将应用程序的pics文件夹的文件等载入内存,形成图像对象。for(inti=0;i<8;i++){imageFish[i]=Toolkit.getDefaultToolkit().getImage("./pics/fish0"+i+".gif");}imageFish为Image数组。(3)图像重绘重绘在面板类中的某个函数中进行,使用某个方法(drawImage)画图形。g.drawImage(Background,0,0,getWidth(),getHeight(),this)g.drawImage(imageFish[(fish.i/2)*2],fish.x,fish.y,this)(4)控制播放速度try{sleep(space);//v}catch(Exceptione){}fishpanel.repaint();45 毕业论文}Space为整型数据,表示两次帧之间的时间间隔。(5)系统内动画的整体实现客户端得动画即为一条条游鱼的游动,动画的实现由fish类和fishpanel类协同完成,每个fish对象在位置发生变化后都会调用fishpanel类的repaint()方法重绘。4.3音频模块的实现4.3.1音频模块的原理目前java处理的音频数据流常用的格式有WAV.AU.SND.MIDI.G711.OGG.GSM.MP3等,应用java音频处理可以很方便地实现语音处理。Java声音应用程序接口是采集和播放声音。最重要的是如何把具有一定格式的声音数据输入到系统或从系统输出外部。这个任务包括打开声音输入和输出设备并且管理缓存,缓存里存放实时声音数据。也包括把多股数据流混合成一股数据流。当户需要播放,暂停,重放,停止时,必须正确地处理声音流的输入输出。Java语音提供了两大类处理音频数据流的API:一类是应用于标准计算机设备中的API,它们可以处理各种声音(声音的频率在0HZ~20HZ范围内,包括语音和音乐等),例如javaSoundAPI等,使用这些API可以实现声音的采集.编码.传输.播放等处理;另一类是更适合应用于嵌入式设备中的API,它们是专门处理语音的(语音的频率在20HZ~80HZ范围内),在java的sun.audio包中audiostream对象提供了基本的声音播放支持(一)文件和流流[1]是指计算机各部分之间数据流动。通常我们将文件内的二进制数据转换为流的形式进行传递。AudioSystem类提供了文件和声音流相互转换的方法。它可以报告声音文件的格式并且用不同的格式把声音数据写到文件。AudioSystem类有三种读声音文件格式的方法:staticAudioFileFormatgetAudioFileFormat(java.io.Filefile)staticAudioFileFormatgetAudioFileFormat(java.io.InputStreamstream)staticAudioFileFormatgetAudioFileFormat(java.net.URLurl)AudioSystem类有三种读声音输入流的方法:staticAudioInputStreamgetAudioInputStream(java.io.Filefile)staticAudioInputStreamgetAudioInputStream(java.net.URLurl)staticAudioInputStreamgetAudioInputStream(java.io.Input-Streamstream)AudioInputStream类提供了读声音数据格式的方法:45 毕业论文AudioFormatgetFormat()4.3.2系统内的实现其中musicplay类也是使用audiostream来实现背景音乐播放的,具体代码:publicclassMusicPlayextendsThread{FileInputStreammusic;//声明文件流对象privatestaticfinalintSleepTime=1500;inti;publicbooleanplay=true;AudioStreamplay_music;MusicPlay(){this.start();}publicvoidrun(){while(play){try{i=(int)Math.floor(Math.random()*2);music=newFileInputStream("./sound/bubble"+i+".wav");//创建文件流对象//music=newFileInputStream("../windmusic.wav");play_music=newsun.audio.AudioStream(music);//创建音频流对象}catch(Exceptione){System.out.println(e);}4.4客户信息列表实现直接使用JDK开发包中提供的类java.util.linkedlist可以方便地创建链表或删除、添加节点,节点中的每个数据单元均为clientinfo(客户信息)类对象。新建链表的代码:Linkedlistlist=newLinkedlist();添加节点:List.add(client_info)删除节点的代码:List.remove(id)id表示要删除的节点位置客户信息的维护主要在fishserver类中实现:publicclassFishServer{Transmittertransmit;publicFishServer()45 毕业论文{transmit=newTransmitter();try{MulticastSocketsocket=newMulticastSocket(5004);InetAddressaddress;//客户信息列表//得到230.0.0.1的地址信息try{address=InetAddress.getByName("230.0.0.1");//使用joinGroup()将多播套接字绑定到地址上socket.joinGroup(address);}catch(UnknownHostExceptione){e.printStackTrace();}5.系统测试5.1测试策略知识简介软件测试[13]是为了发现程序中的错误而执行程序的过程。软件测试从单元测试逐步进入集成测试,最后进行确认测试和系统测试。软件测试一般有两种方法:黑盒测试和白盒测试。45 毕业论文黑盒测试法(又称功能测试)完全不考虑程序的内部结构和处理过程,直接在程序接口进行的测试。它只检查程序功能是否能按规格说明书的规定正常使用,程序是否能适当的接受输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。白盒测试法(又称结构测试)与黑盒测试法相反,这种方法按照程序内部的逻辑测试程序,检查程序中的主要执行通路是否能按预定要求正确工作。模块测试(又称单元测试):在设计的好的软件系统中,每个模块完成一个清晰的子功能,而且这个子功能和同级其它模块的功能之间没有互相依赖关系。因此,把每个模块作为一个单独的实体来测试,以此来保证每个模块作为一个单位能正确运行。子系统测试:子系统测试时把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通信是把这个测试过程中的主要问题,因此,这个步骤着重测试模块的接口。系统测试:系统测试是经过测试的子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能。5.2测试用例的设计和结果分析在系统实现后,为了检测系统的性能是否达到了设计要求,对系统进行严格的测试是很有必要的。本系统产用黑盒测试法来尝试发现系统中的一些错误,本次测试主要以使用一个服务器端和两个客户端为主进行测试。5.2.1动画功能测试客户端动画效果实现如图5.1:45 毕业论文图5-1动画效果实现图根据效果图让系统的动态游鱼效果得到了体现,说明动画模块得到了实现。5.2.2音乐功能测试对上面的功能菜单选项进行测试,能够听到优美动感的音乐。当无人操作本展台的时,测试系统进入动画状态,音乐能够随着动画循环播放。此外,如果选择暂停音乐系统,背景音乐也会关闭。5.2.3网络功能测试服务器启动后,并有一台客户机与服务器建立连接后的执行效果图5.2:45 毕业论文图5-2执行效果图有图可知,服务器端正常启动,客户端成功与服务器连接,并且符合当初设计的效果,能够无须得知服务器端IP地址,能够得到客户端的IP地址与端口号。说明系统能够正常的启动并连接。服务器运行时,转发客户端的数据包,执行效果图如示:图5-3执行效果图有图可知,服务器能够正常转发客户端的数据,实现了网络通信功能。客户端发生数据转发后,客户端的界面显示如图5.4:45 毕业论文图5-4执行效果图由图可知,客户端的游鱼信息发生了数据的传递,实现了预期目标。5.3本章小结本章针对系统实现的功能进行了全面的测试。根据测试知识对系统进行了针对性的检测,并给出了测试结果。测试表明本系统达到了设计时的预期目标。6.总结与展望本人作为本系统的开发者,在开发的过程中,不仅将以前的知识进行了复习而且得到了事件并查找一定量得书籍,丰富了自己的知识库。由于本人的能力有限,该系统比较简单,在很多方面都考虑不周全,功能也不是很完善。虽然遇到了许许多多意想不到的困难,但最终还是成功的完成了系统的开发。在操作系统、应用环境等方面都未涉及思考,另外在涉及用户的交互性方面,还是比较欠缺。在其安全性方面,数据采取的是udp的传输模式,相比较tcp而言安全性较差。在其系统运行的稳定性而言,也未涉及过多的考虑。45 毕业论文在开发中,学习到了如何找资料,如何解决问题,锻炼了思维能力,学会了去发现问题,在问题中利用自己所学的知识去解决问题,如果看到了碰到了自己没学过的,也能够通过相关的学习,掌握其知识点,所以这个过程还拓展了我的知识面,扩展了我的学习领域,增强了我的能力。在使用之前的知识解决问题时,能让自己更好的巩固以前的知识,联系相关的学科,感觉到整个开发需要一个整体的知识框架,需要一个完整的知识面,更需要坚持不懈地努力。在整个系统的开发过程中,我本着实事求是,刻苦耐劳的心态和要把理论应用于实践的决心,尽可能多的去查阅资料。重要的是通过本次开发锻炼了我分析问题和动手编程的能力,同时也提高了我对开发工具的使用能力。参考文献[1]曹晶java多线程机制与多媒体技术广东技术师范学院学报200404期[2]曹莹,苗志刚,赵秀明.浅谈java优势[J].中国科技信息,2006(01)[3]徐让宏.Java的多线程[J].电子与电脑,1997(08)[4]陈涵生.Java技术[J].自然杂志,1997(02)[5]赵鹏伟,刘力,姜岩.java语言二维动画方法[J].微计算机应用,2003(01)45 毕业论文[6]范凯多媒体计算机技术及其发展前景,安徽工学院报.1994.01期[7]杨晓燕.基于java的多媒体实现技术[J].计算机工程与设计,2006(03)[8]朱福喜黄昊java项目开发与毕业设计指导.清华大学出版社,2008.6p135[9]ComputerNetworking:/RobertP.BlancNewYork:TheInstituteofElectricalandElectroncsEngeers,Inc,c1976p135[10]Systemsupportformultimediaapplications:anassessmentofthestateoftheartGordonS.blairgeoffcoulsonandnigaldavies[11]杨宗芝如何使用java语言进行动画设计[J].软件世界,1998(1)[12]王克宏,孙元,丁锂.JAVA语言的基本编程原理[J].中国图象图形学报,1997(12)[13]张海藩.软件工程导论.清华大学出版社,2008.2[14]吴林JAVA语言制作多媒体方法,电脑学习期刊1997年06期[15]王克宏Java的基本编程原理[J],中国图像图形学报,1997,12期45

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭