基于openRTMFP在线远程培训点播系统服务器控制程序设计与实现_第1页
基于openRTMFP在线远程培训点播系统服务器控制程序设计与实现_第2页
基于openRTMFP在线远程培训点播系统服务器控制程序设计与实现_第3页
基于openRTMFP在线远程培训点播系统服务器控制程序设计与实现_第4页
基于openRTMFP在线远程培训点播系统服务器控制程序设计与实现_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、 本科毕业设计(论文)基于openRTMFP的在线远程培训点播系统服务器控制程序设计与实现 学 院 软件学院 专 业 软件工程 学生姓名 学生学号 指导教师 提交日期 2014 年 06 月 01 日摘 要本文详细介绍了基于openRTMFP的P2P视频点播系统服务器应用相关原理及该服务器后台控制程序的实现过程。采用基于openRTMFP的P2P视频点播系统方案能减少视频点播时宽带消耗,提升传送速度,以及快速连接恢复。因此,采用这种方案针对视频点播系统的实现将有利于开发者快速部署应用环境,降低开发成本。实时流媒体应用中能提供优秀的的用户体验。openRTMFP(Cumulus Server)是

2、一个完全开源和跨平台的可扩展的RTMFP协议媒体服务器,支持P2P点到点服务、修改Lua脚本创建自己的应用程序、实现实时应用的高并发扩展及负载均衡等功能。通过修改脚本创建个性化的服务端应用程序来扩展Cumulus的功能,再创建一个类似客户端的应用与该服务端建立连接和数据通信。服务器端控制程序的设计与实现是基于openRTMFP的P2P点播系统的一个子课题。首先需要熟悉该openRTMFP服务器框架及运行原理,其中包括openRTMFP源程序安装和编译,对POCO库、openssl、Lua脚本的学习等,修改该服务器脚本创建自己的应用程序来扩展Cumulus功能,开发出的程序界面应该简洁友好,便于

3、用户理解和操作。服务器端控制程序实现的主要功能是查看当前用户的连接数量,流量监控,重连,断开服务。本文先对当前基于P2P视频点播系统应用设计技术和背景作简单介绍,对本课题用到的开发工具和任务安排简单说明;接着阐述RTMFP协议特点、开源openRTMFP项目的开放接口及Lua脚本语言,服务器编译安装说明;然后是支持在线远程培训后台管理控制程序的设计与实现过程,涉及到需求、程序概要设计、详细设计和程序测试等。最后总结与展望对该项目的学习和设计过程。关键词:openRTMFP;RTMFP;P2P;实时流媒体;控制程序Abstract This article describes the relat

4、ed principles of openRTMFP-based and P2P VOD System server applications and the implementation process of implementing a server control program. The scheme of P2P VOD System OpenRTMFP-based can reduce the time consumption of broadband video-on-demand, improve transmission speed, and restoring connec

5、tion quickly . Therefore, using this scheme for video-on-demand system will be beneficial to developers to quickly deploy applications and reduce the cost of development. Real-time streaming media applications can provide users excellent with experience.The openRTMFP (Cumulus Server) is a completely

6、 open-source , cross-platform and scalable RTMFP protocol media server. Supporting for P2P-point service, modifying Lua script to create their own applications, high concurrent expansion and load balancing capabilities. By modifying the script to create a personalized Cumulus server application to e

7、xtend functions, and then create a similar application client to establish a connection and data communication with the server.The design and implementation of server-side control program is a sub-topic that based on openRTMFP of P2P video-on-demand system. First, need to be familiar with the openRT

8、MFP server framework and operating principles, including openRTMFP source compilation and installation of the POCO libraries, openssl, Lua script learning. Modifying the server script to create their own server applications to extend Cumulus functions, the interface of the program should be simple a

9、nd friendly, easy for users to understand and operate. The main fuction of the server-side control program is to view the current clients numbers of connections, traffic monitoring , reconnect, disconnect the service between the client and server.This article firstly make a brief introduction of P2P

10、-based video-on-demand on the current system application design techniques and background , a explanation of development tools and tasks arrangement for this study; then introduce the RTMFP protocol features, API of open source projects openRTMFP and Lua scripting language, the server compiler insta

11、llation instructions; then summarize the design and implementation of designing server control program, involving requirements, procedures outline design, detailed design and program testing. In the end,Concludes with the prospect of learning and design process for the project. Keyword: openRTMFP, R

12、TMFP, P2P, real time streaming media, control program第一章 引言1.1课题背景和简介 随着计算机网络和视频流媒体技术的发展,人们对互联网视频点播系统的需求与期望更高。传统的客户端/服务器模式的流媒体服务系统已不可以满足流媒体对服务器性能以及高带宽的要求,这类视频应用限制了视频的传输速度和清晰度,影响用户体验。针对这类问题,采用P2P对等网络技术实现的视频通信应用能减低对服务器的压力,降低通信延迟和宽带开销。随着P2P技术发展的逐步完善,在视频点播/在线直播,用户文件共享,分布式计算领域得到广泛应用。目前流行的基于P2P的视频点播系统有:暴风

13、影音、在线电视直播PPLive、Flash Player播放器等应用。现有的流媒体协议包括有RSVP(资源预留协议)、RTP(实时传输协议)、RTCP(实时传输控制协议)、MMS(微软流媒体服务协议)、RTSP(实时流传输协议)、MIME(多目因特网电子邮件扩展协议)、RTMP(Adobe实时消息协议)、RTMFP(Adobe实施消息流协议即P2P协议)。Adobe公司的产品Flash Player和Air1.5 率先使用对等网络实时流媒体协议RTMFP,提供媒体服务端的支持使得可以实现应用层组播和P2P功能。openRTMFP(Cumulus Server)是一个完全开源和跨平台的可扩展的R

14、TMFP协议媒体服务器脚本,Cumulus Server遵循基于GPL 框架下的优势、速度、跨平台、轻量和高质量代码。支持现场直播和视频聊天、支持P2P点到点服务、支持push、RPC、pull切换,并能和服务器端与所有AMF客户端通信、支持修改脚本创建自己的应用程序来扩展Cumulus的功能、负载均衡等功能。 1.2主要研究工作 本课题运用开源的openRTMFP服务器开发一个基于flash的p2p点播系统。采用基于openRTMFP的P2P视频点播系统方案将能减少视频点播时宽带消耗,提升传送速度,以及快速连接恢复。openRTMFP服务器采用的RTMFP协议是基于UDP的,在减少延时和丢包

15、容忍上有很大优势,同时客户端数据可直接传送,适合大范围部署。利用现有的openRTMFP服务器程序,开发一个界面控制,主要功能有:查看当前用户的连接数量,流量监控,重连,断开服务,主要难点:配置安装openRTMFP服务器,读懂该服务器代码,了解服务器工作原理,进而进行界面开发。因此设计与实现基于openRTMFP的P2P点播系统服务器控制程序,对了解P2P视频通信应用,学习配置基于RTMFP协议的服务器Cumulus有重要意义。熟悉该服务器框架并开发控制程序,监控和维护该视频点播系统中客户端和服务器连接使用情况。 1.3相关开发工具与技术介绍 Microsoft Visual Studio

16、2010开发工具 Visual Studio是目前最流行的Windows平台应用程序开发环境。Microsoft Visual C+是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面,支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。目前有专业版、高级版、旗舰版、

17、学习版和测试版五个版本。本项目编译Cumulus服务器开源项目使用到的是VS2010的旗舰版。 POCO C+库 POCO C+库是开源的用于简化和加速C+开发面向网络、可移植应用程序的C+库集。包含4个核心库及一些附加库. 这4个核心库分别是: Foundation, XML, Util 和 Net. 附加库中其中2个是NetSSL和Data,NetSSL为Net库中的网络类提供SSL支持, Data库提供访问不同SQL数据库的一致性接口。Foundation库包含底层平台的封装层,也包含经常使用的工具类和函数如:数字和字符处理类,日期时间处理类,stream类用于写二进制数据到流中,多线程

18、的封装等;XML类库支持处理,读取和写XML文件;Net库包含包含socket类, 支持TCP流和server sockets, UDP sockets, multicast sockets, ICMP 及 raw sockets;Util库包含创建命令行和服务器应用框架和管理配置信息。成功编译openTMFP服务器需要安装POCO库支持,因为Cumulus中Cumuluslib是rtmfp主体实现,大量用到poco库中socket、thread、IO线程等。 OpenSSL库OpenSSL是安全套接字层密码库,大致可分为SSL协议库,应用程序和密码算法库。编译服务器时需要在系统安装OpenS

19、SL,安装Perl,配置VC环境变量,编译动态链接库等过程。LuaJIT(lua脚本编译器)Lua,轻巧的脚本语言,用于嵌入到应用程序为其提供扩展和定制个性化功能。在本开源服务器项目中的CumulusServer其实是根据CumulusLib而设计的可扩展服务器框架,用来支持lua以及服务器直接负载均衡。JavaScriptJavaScript是一种基于对象和事件驱动并且具有一定的安全性的客户端脚本语言。它是一种动态、弱类型、基于原型的语言,JavaScript内置支持类。一个完整的 JavaScript 是由以下 3 个不同部分组成的:核心(ECMAScript)、文档对象模型(简称DOM)

20、、浏览器对象模型(简称BOM)。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。1.4论文内容安排 本文主要介绍了openRTMFP服务器的编译安装、实现对服务器应用扩展以及设计实现支持在线远程培训后台管理系统,并对该系统进行系统测试。本文主要内容分为八章,其组织结构如下:第一章为引言,引言的主要内容是对课题背景意义、研究工作、开发工具的介绍。说明了在何种背景下完成该项目和本文完成的工作第二章为相关技术介绍,是对课题涉及的P2P、RTMFP协议、流媒体技术简单分析。熟悉这些技术有利于如何实现本文涉及的项目。第三章

21、为openRTMFP服务器的介绍,主要内容为对openRTMFP源代码的学习分析,了解其架构和核心实现,并利用lua脚本实现服务器的应用扩展meeting服务器应用。第四章、第五章、第六章、第七章是对支持在线远程培训后台管理系统整个开发实现过程的分析和介绍,包括需求分析、概要设计、详细设计、系统应用测试四个方面; 最后一章为总结与展望,对本文研究的内容进行总结以及对未来的展望。第二章 相关技术介绍2.1 P2P目录摘 要IIAbstractIIIThis article describes the related principles of openRTMFP-based and P2P VO

22、D System server applications and the implementation process of implementing a server control program. The scheme of P2P VOD System OpenRTMFP-based can reduce the time consumption of broadband video-on-demand, improve transmission speed, and restoring connection quickly . Therefore, using this scheme

23、 for video-on-demand system will be beneficial to developers to quickly deploy applications and reduce the cost of development. Real-time streaming media applications can provide users excellent with experience.IIIThe openRTMFP (Cumulus Server) is a completely open-source , cross-platform and scalab

24、le RTMFP protocol media server. Supporting for P2P-point service, modifying Lua script to create their own applications, high concurrent expansion and load balancing capabilities. By modifying the script to create a personalized Cumulus server application to extend functions, and then create a simil

25、ar application client to establish a connection and data communication with the server.IIIThe design and implementation of server-side control program is a sub-topic that based on openRTMFP of P2P video-on-demand system. First, need to be familiar with the openRTMFP server framework and operating pr

26、inciples, including openRTMFP source compilation and installation of the POCO libraries, openssl, Lua script learning. Modifying the server script to create their own server applications to extend Cumulus functions, the interface of the program should be simple and friendly, easy for users to unders

27、tand and operate. The main fuction of the server-side control program is to view the current clients numbers of connections, traffic monitoring , reconnect, disconnect the service between the client and server.IIIThis article firstly make a brief introduction of P2P-based video-on-demand on the curr

28、ent system application design techniques and background , a explanation of development tools and tasks arrangement for this study; then introduce the RTMFP protocol features, API of open source projects openRTMFP and Lua scripting language, the server compiler installation instructions; then summari

29、ze the design and implementation of designing server control program, involving requirements, procedures outline design, detailed design and program testing. In the end,Concludes with the prospect of learning and design process for the project.III第一章 引言IV1.1课题背景和简介IV1.2主要研究工作IV1.3相关开发工具与技术介绍V1.4论文内容

30、安排VI第二章 相关技术介绍VII2.1 P2PVII介绍VII2.2 RTMFP协议VIII2.2.1 RTMFP原理VIII2.2.2 RTMFP特点IX2.3 流媒体技术IX第三章 openRTMFP服务器X3.1 openRTMFP服务器介绍X3.2 openRTMFP服务器编译及安装X3.3负载均衡及可扩展性XI3.4 openRTMFP常用的 API和套接字XII3.4.1常用的APIXII3.4.2 openRTMFP的Socket 使用XII3.5 openRTMFP源码浅析XIII3.5.1 openRTMFP服务器的启动流程XIII3.5.2 Cumulus服务器主线程分析

31、XV3.6 CumulusServer服务器应用及简单实例XVI3.6.1 如何创建自定义的服务器应用XVI3.6.2 加载全局配置XVII3.6.3 应用间通信XVII3.6.4 自定义服务器应用实例XVII第四章 系统需求分析XX4.1需求分析的目的和意义XX4.2功能性需求分析XX4.2.1后台用户管理功能需求描述XX4.2.1流量、节点监控功能需求描述XXI4.2.2广告插播功能需求描述XXII4.2.3视频控制管理功能XXIII4.2.4自动转换格式及码率功能需求描述XXIV4.3 非功能性需求分析XXIV第五章 系统概要设计XXVI5.1系统总体架构设计XXVI5.2系统后台服务模

32、块设计XXVI5.2.1后台用户管理模块XXVI5.2.2视频管理模块XXVII5.2.3广告管理模块XXVII5.2.4系统信息模块XXVIII5.3后台管理系统数据库设计XXVIII第六章 后台管理系统实现XXXI6.1 后台用户管理模块实现XXXI6.1.1 后台用户登录与注销XXXI6.1.2后台管理用户添加和删除XXXII6.2 视频管理模块实现XXXIV6.2.1添加视频功能实现XXXIV6.2.2删除视频功能实现XXXIV6.3 广告管理模块实现XXXVI6.3.1广告添加功能XXXVI6.3.2广告删除功能XXXVI6.4系统信息(监控)模块实现XXXVII6.4.1节点数量监

33、控实现XXXVII6.4.2服务器所在系统流量监控实现XXXVII第七章 后台管理系统应用及测试XXXIX7.1用户管理模块应用与测试XXXIX7.2 视频管理功能应用与测试XXXIX7.3 广告管理功能应用与测试XXXIX7.4 系统信息监控功能测试XL7.5 后台管理系统应用测试小结XL第八章 结论与展望XLI8.1 结论XLI8.2 展望XLI参考文献XLII致谢XLIII2.2 RTMFP协议 2.2.1 RTMFP原理 RTMFP实时媒体流协议(Real-Time- Media Flow Protocol)是 Adobe 公司开发的一个专有的通信协议,通过 C/S 和 P2P 模型能

34、够在网络中高效的传送多媒体信息如音乐视频文件等。RTMFP协议可以让Adobe Flash Player的所在终端用户之间实现直接点对点等多种通信。RTMFP将直接减少实时通信流量带宽成本,如音频通话、视频聊天和多人游戏等应用。 RTMFP的工作原理是:首先,客户连接到基于RTMFP协议服务器,如Flash Media Server、openRTMFP(又称Cumulus),连接成功后获得唯一的客户端标识码ID。然后获得ID后的客户端就可以使用UDP协议发布数据、音频或者视频信息。和该客户端连接在同一个服务器上的其他客户端应用可根据ID接收它已发布的流信息。当然其它客户端也要事先连接到同一个服

35、务器,获取自己的ID,以及流资源的一些信息,便于订阅用户所需要的流资源。RTMFP协议实现涉及的技术支持有:客户端涉及到组播的实现,每一个连到服务器的端应用如果相互可见就会在服务器端形成一个组Group。一个Group同时保存组内个成员间的路由信息,因此组内任何两节点间存在直接或间接的通信连接。Flash Player10.1版本后允许实现应用层组播技术,寻找合适分发路径,把资源通过P2P方式分发到相应的组。组播通信流是一个或者多个发布者可在group中全体组员发布组播流信息及数据。服务器端需要支持RTMFP协议,支持覆盖网络,对象复制特性,同时在不同地址的服务器通过TCP连接实现共享用户资源

36、信息等。2.2.2 RTMFP特点因为RTMFP之间传递数据通信是在最终用户客户端之间传递数据,而不是客户端与服务器之间,服务器的带宽不被大量占用,是成本最低的解决方案。RTMFP 使用户通过麦克风和摄像头能够直接与其他用户连接和通信,也可以发送消息。RTMFP 协议是基于UDP协议来实现数据传送,UDP协议不可靠但传送音频视频数据速度快。终端用户和终端用户之间实时通信对实时性要求较高,因此可容忍部分丢包、错包的现象存在。RTMFP 协议有如下这些特点,可能有助于减少连接失败错误等一下相关影响。(1)较安全且低时延:传输的数据利用AES加密,终端通信安全。UDP协议实时性降低时延。(2)快速连

37、接恢复:网络连接中断后能快速恢复连接。例如,当一个无线网络连接,经历中断,重新连接成功后即有数据传输能力。(3)IP 允许变动:即使客户端更改到一个新的 IP 地址,这个活动的网络的会话依然会保持且在激活状态。2.3 流媒体技术流媒体系统的架构主要分四部分:媒体服务器,播放器,媒体编码器,文件存储器。制约流媒体性能服务的关键因素是对传输质量的控制。比如如何支持较多的用户并发数,保证端和端之间的QoS(服务质量)。另外多媒体数据网络传输和控制协议有RTP/RTCP协议、RSVP协议、RTSP协议,RTMP协议、RTMFP协议。第三章 openRTMFP服务器3.1 openRTMFP服务器介绍o

38、penRTMFP(也称Cumulus Server)是支持Lunix、Windows、Mac等主流系统的跨平台,可扩展的完全开源服务器。该服务器遵循GPL框架下的优势、跨平台、速度、代码轻量且高质量。用户可以通过Cumulus官网去免费下载源代码并在需要的平台上编译安装Cumulus Server。它具有点到点P2P服务、现场音频视频直播以及pull/ push/RPC切换支持等特点, 支持服务器之间通信来实现负载均衡,而且支持任何AMF终端应用和服务器端进行通信,通过修改脚本(主要用Lua脚本语言)来创建应用程序、扩展Cumulus来实现更个性化的功能。3.2 openRTMFP服务器编译及

39、安装编译安装Cumulus Server需要OpenSSL密码库、POCO库、LuaJIT编译器等框架的支持,所以安装前要到、、、 OpenRTMFP/ Cumulus官网下载好需要的库以及cumulus源代码。下载过程注意选择支持所用操作系统以及编译工具如(VS2010)的正确版本,以免安装过程出错。在Windows系统,VS2010开发环境安装步骤主要有以下几个步骤:1. 安装POCO C+库。命令行下cd进入该库解压目录,分别输入以下命令编译:先"%VS100COMNTOOL

40、S%vsvars32.bat" 再buildwin 100 build static_mt both Win32 nosamples devenv 编译成功后,添加它的包目录和库目录到CumulusServer_2010.sln工程。2. 安装和编译OpenSSL。编译完成后添加openssl的inc32包目录和out32dll库目录到CumulusServer_2010.sln工程。3. 安装和编译LuaJIT编译器。命令行下进入LuaJIT的src资源目录,分别输入 "%VS100COMNTOOLS%vsvars32.bat" 和

41、msvcbuild.bat命令编译安装完成后,再添加LuaJIT的src目录到CumulusServer_2010.sln工程的VC+库目录。4. 至此,openRTMFP的编译准备工作完成,然后开始编译工程,把src包中的lua51.dll复制到ColumnsServer.exe所在的目录下。安装编译openRTMFP服务器工作有一定的难度,安装过程会发生各种不同的问题,大部分是由于操作系统动态库缺失、编译工具差异引起。因此发生问题时仔细分析出错问题原因,上网查询出错原因及解决方法。成功启动openRTMFP后界面显示如下:图3-1 openRTMFP编译成功界面 安装成功后,在服务器的可执

42、行目录(即Cumulus.exe的目录)中默认会生成一个logs的文件夹,文件夹里面会生成log.0格式的文件,用windows写字板打开后可查看服务器启动时的时间、端口等基本信息。还会生成名字为www的文件夹,里面存放是利用lua脚本语言扩展cumulus后开发的服务器应用。3.3负载均衡及可扩展性 RTMFP是一个P2P协议,需要有一个服务器端点处理所有客户端之间的点对点连接。但基于UDP的特性,RTMFP只有处理如实时视频/音频流的能力,在经典的B/S模式不使用P2P功能 。这种情况下一直使用服务器负载,需要中央可用性。当然,一台机器总会有一些硬件上的限制(CPU /内存),这时负载变得

43、特别重要,一个CumulusServer实例将远远不够的。为了解决负荷需求,CumuluServer中的完整框架可使多个CumulusServer实例通信,放大计算和接收能力。它允许配置多个CumulusServer环境,提供检测服务器连接和断开的,服务器之间的数据交换,客户端与服务器的重定向来部署系统的负载均衡,例如在同步客户端信息和与NetGroup的RTMFP选项。服务器之间的通信使用原始的TCP方式进行。负载均衡及可扩展性体现在如下方面:1. 服务器应用之间交换数据和资源。新的服务器应用加入时,分享已有发布者信息。2. 负载均衡和会合服务。客户端连接时接受到多个服务器应用地址,RTMF

44、P启动多个并联连接尝试,最先建立连接的服务器应用将会成功连接到客户端3.4 openRTMFP常用的 API和套接字本节介绍一些常用的CumulusServer服务器应用的事件和开发接口,方便如何建立服务器应用。另外简单分析 openRTMFP套接字运用。3.4.1常用的API表3-1 常用API说明对象属性方法名事件对象说明CommonnotionsvaluemethodonManage一些共同的声明CumulusClients, groups,Configs, servers,publicAddresscreateTCPClient(),absolutePath(path)publish(

45、name)/全局对象,提供对本身元素的访问Clientscountpairs(),(id/rawId)/连接服务器客户端集合Clientid, rawId, address, flashVersion,path ,pageUrl,writer/onManage一个已连接的客户端对象Publicationname,publisherId,listeners, audioQOS,videoQOSpushAudioPacket(.)pushVideoPacket,pushDataPacket,flush(),close()发布者Listenerid,audioQOS, receiveAudio等/一

46、个发布的一个订阅者ServerAddress, is TargetpublicAddress/描述服务器间连接的一个对象CumulusServer在服务器应用脚本中调用的事件包括:onStart(path)、onStop(path)、onConnection(client,.)、onDisconnection(client)、onFailed(client,error)、onJoinGroup(client,group)、onUnjoinGroup(client,group)、onPublish(client,publication)、onUnpublish(client,publicatio

47、n)、onVideoPacket(client,publication,time,packet)、onSubscribe(client,listener)、onAudioPacket(client,publication,time,packet)、onManage()、onDataPacket(client,publication,name,packet)、onServerDisconnection(server)、onUnsubscribe(client,listener)、onServerConnection(server)、onHandshake(address,path,propert

48、ies,attempts)3.4.2 openRTMFP的Socket 使用CumulusServer的服务器应用使用LUA机制,可以添加一些需要的特性去扩展它。通常用到LUASocket去添加LUA的套接字,但是这种扩展有3种缺点:1. 所有接受和发送数据的方法默认使用阻塞模式,如果修改,就不能在TCP中正确工作,LUA本质是单线程的,每个脚本处理机管理的结果必须返回给Cumulus。2. LUASocket 在Windows系统上并不会一直出色运行。3. 它无效地重复套接字的跨平台特性。为了创建一个UDP套接字,需要调用createUDPSocket(allowBroadcast)方法创建

49、一个socket对象,包含address和peerAddress (连接到这个套接字的点端地址),这里列举一个简单的例子来理解这个运用如下:socket = cumulus: createUDPSocket () function socket: onReception (data, address) NOTE ("Reception from " .address) self: send (data, address) end err = socket: bind(":1234") 启动服务器 if error then ERROR (e

50、rr) end3.5 openRTMFP源码浅析 Cumulus服务器源码主要包括两大部分,CumulusLib和CumulusServer,其中CumulusLib是RTMFP协议的主体实现部分,里面大量使用到了poco库相关的thread处理,socket处理,IO线程和work线程池等其它相关工具,因此它基本是服务器本身的一个大概框架。而CumulusServer是使用CumulusLib中的相关类而扩展出去的一个服务器框架,里面的代码用于支持写Lua脚本语言开发服务器应用,以及支持服务器间的负载均衡。CumulusServer部分代码包含服务器启动和处理客户端相关请求的所有方法,并提供

51、lua接口供开发者搭建自己的服务端应用,利用这些接口能快速写上层业务逻辑,也能有效的与下层解耦,不容易出错。3.5.1 openRTMFP服务器的启动流程 Cumulus启动入口在main.cpp文件中,main.cpp定义了CumulusServer类,声明了程序入口int main(int argc, char* argv)函数;其中具体如下:int main(int argc, char* argv) DetectMemoryLeak();/内存泄露return CumulusServer().run(argc, argv)DetectMemoryLeak()方法用来检查内存泄露,目前的

52、项目没有实现这个功能,是个空函数。return CumulusServer().run(argc, argv)语句,创建CumulusServer的匿名对象,并调用run(argc, argv)。CumulusServer类继承于ServerApplication,而ServerApplication类继承于Application类。CumulusServer 类的对象调用 run(argc, argv) 函数,实际是 ServerApplication 的 run() 函数,ServerApplication 的 run() 函数则是调用 Application 的函数,而该 run(.)

53、函数则是先调用 initialize() 函数,然后调用 main() 函数,然后调用 uninitialize() 函数。如果 initialize() 函数被调用时抛出异常,则不会执行 main() 函数,但仍然会执行 uninitialize() 函数:关于CumulusServer类的相关属性和方法如下: /构造、析构函数 /显示帮助信息 /帮助请求 /初始化服务器配置信息 /日志路径 /CumulusServer的main函数3-3 CumulusServer类说明CumulusServer在执行 main() 函数之前,会启动 initialize() 函数来初始化配置信息,调用l

54、oadConfiguration(const string& path)装入配置,path为CumulusServer.ini文件的路径。CumulusServer在执行 自身的main() 函数的流程如下:1. 查看是否需要帮助信息,调用displayHelp()函数实现2. 不需要显示帮助时进入启动状态,先创建RTMFPServerParams对象params,存储OpenRTMFP/CumulusServer的基本配置port、udpBufferSize等信息3. Server server(*this,config(); server.start(_params);服务器启动4

55、. waitForTerminationRequest();/等待终止运行的操作请求,然后server.stop();执行main()函数后是uninitialize()反初始化,其中CumulusServer类还包含一些其它函数,如命令行选项设定defineOptions()函数,命令行选项处理函数handleOption(),处理日志流函数logHandler(),manageLogFile()处理日志文件大小限制产生的问题等函数。kill()停止服务器运行,该函数是ApplicationKiller类的一个纯虚函数,继承ApplicationKiller类的CumulusServer中必须实现。3.5.2 Cumulus服务器主线程分析main.cpp文件中会启动server,Server类继承自Cumulus:REMFPServer,而,RTMFP继承自Cumulus:Startable、Cumulus:Gateway、Cumulus:Handler。而Cumulus:Startable继承自Poco:Runnable,在CumulusServer中,该线程就是服务器的主进程。main()方法中调用server.sta

温馨提示

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

评论

0/150

提交评论