《基于TLS安全的MTP命令解释器.doc》由会员分享,可在线阅读,更多相关《基于TLS安全的MTP命令解释器.doc(67页珍藏版)》请在三一办公上搜索。
1、摘 要基于TLS安全的MTP命令解释器的设计,它主要实现模拟媒体终端设备对MTP消息进行解析。从命令的来源看,可以分为三种方式,第一种方式为Socket连接(包括加密、不加密),第二种方式为Console输入以及第三种方式,即文件的多条批处理MTP命令的解析。从总体功能来看,可以分为四个模块,即系统启动、接收命令、解析命令以及响应。论文首先论述了课题的背景、开发前提以及开发意义。随着我国数字电影的发展,XXXX公司研发了以硅基液晶技术为核心的高清晰度4K(40962048)的数字放映机。开发过程中对于媒体终端设备的依赖,开发了MTP Simulator,继而要从各个方面分析这个系统的可行性以及
2、整体的设计逻辑。其次,论述了该系统的详细设计过程。主要有三大模块,分别为Socket MTP模块处理、Console MTP模块处理以及File MTP模块处理。其中Socket MTP模块处理又细化为请求接收、命令处理、命令解析、互斥检查以及response处理。其余两个模块的的细化流程同Socket MTP的细化过程相同。最后,是对该课题所研究的系统进行测试。关键词: MTP Simulator; 图形界面; Socket;Console;文件; MTP(媒体终端协议);TLS(安全传输层协议)AbstractMTP commands based on TLS security to ex
3、plain the design, it is primarily analog media terminal device to parse the MTP message. From the source of the command can be divided into three modules, the first module for Socket connections (including encryption, no encryption), the second module for console input and the third module, file bat
4、ch MTP command parsing. From the perspective of the overall function, can be divided into four modules, namely, the system starts to receive the command, parses the command and response. The paper first discusses the background of the topic, the development of the premise and the development of mean
5、ing. With the development of digital cinema in China, XXXX has developed a high-resolution liquid crystal on silicon technology for the core 4K (4096 x 2048) digital projectors. The development process for the dependence of the terminal equipment of the media, decided to develop the MTP Simulator, a
6、nd then from all aspects of the feasibility of this system, as well as the overall design logic. Secondly, it discusses the details of the system design process. There are three major modules, respectively SocketMTP module processing, the ConsoleMTP module processing and FileMTP module handles. Sock
7、etMTP module processing also refine the receiver to request, command processing, command parsing, mutex checking and response processing. The refinement process of the remaining two modules with SocketMTP refinement processes the same. Finally, the system under study on the subject to be tested.Key
8、words: MTP Simulator;Graphical interface;Socket;Console;file; Media Terminal Protocol; Transport Layer Security目录1 绪论61.1 课题的来源61.2 课题背景61.3 MTP Simulator开发前提71.4 MTP Simulator开发意义72 MTPSIMULATOR系统分析92.1 MTP Simulator可行性分析92.2 MTP Simulator的功能分析92.3 系统平台分析102.4 所用技术分析102.4.1 Java开发语言102.4.2 Schema技术
9、112.4.3 Eclipse开发工具112.4.4 安全传输层协议(TLS)123 MTPSIMULATOR概要设计133.1 系统结构定义133.2 系统功能模块划分133.2.1 Socket方式的MTP命令143.2.2 Console 方式的MTP命令143.2.3 File方式的MTP命令153.3 文件规则定制163.3.1 MTP命令格式文件163.3.2 MTP命令互斥控制文件173.3.3 Response 文件173.4 系统参数设定183.4.1 配置文件中设定系统参数183.4.2 图形界面设定系统参数203.4.3 TLS证书的导入与导出214 MTPSIMULAT
10、OR详细设计234.1 系统功能逻辑简介234.2模块功能逻辑234.2.1 模块的总体处理逻辑234.2.2 SocketMTP模块处理逻辑244.2.3 ConsoleMTP处理逻辑304.2.4 FileMTP模块处理逻辑334.2.5系统包结构344.2.6 系统类结构354.2.7 类功能详细364.2.8 模块线程图634.2.9 系统时序图655 系统测试695.1 软件测试695.1.1 测试的基本概念695.1.2 测试步骤705.2 本系统功能测试705.2.1 SocketMTP功能模块测试715.2.2 ConsoleMTP功能模块测试715.2.3 FileMTP功能
11、模块测试71结论72致谢73参考文献74附录A 英文原文75附录B 中文翻译801 绪论1.1 课题的来源随着我国高清数字电影的发展,数字电影已经慢慢的融入到我们的日常生活,4K数字电影出色的画质大大提高了3D放映效果,消除了其它单机3D放映系统闪烁和模糊的问题,极大地提升了观众对3D的视觉体验,给观众带来极为震撼、真实的3D视觉享受。20世纪90年代后,计算机技术飞速发展,信息量相对较小的音频率先进入数字化。随后,用计算机进行电影特技画面制作逐步兴起,影片泰坦尼克号、星球大战的成功放映,使人们感受到了数字技术的神奇。在电影摄影领域,从摄像机出现开始,传统胶片摄影就不断接受挑战,本世纪初,数字
12、高清摄像机逐渐进入电影前期拍摄,从最初的高清到2K直到4K数字摄影机,已有多种数字摄影机应用于电影拍摄。在电影后期制作过程中,数字技术改变了电影制作工艺流程,胶片扫描仪将拍摄在胶片上的原始素材转变成数字信号,进入后期制作工作站,艺术家方便地进行编辑、调色、配光等工作,极大地提高了工作效率。在电影放映领域,20世纪90年代后期电影星球前传I首次应用数字投影机在影院放映。数字影厅逐年增加,到2010年底,数字放映的银幕数达到3万块以上。数字放映通过硬盘、网络、卫星等传输方式,可以多地同步放映相同影片。数字放映机从高价笨重到经济便捷,从分辨率1.3K到2K、4K,数字放映技术不断进步。XXXX公司研
13、发了以硅基液晶技术为核心的高清晰度4K(40962048)的数字放映机。为了方便4K数字放映机的管理,因此决定开发数字影院管理系统系统,开发过程中对于媒体终端设备的依赖,决定开发MTP Simulator。1.2 课题背景由于数字影院管理系统开发对于媒体终端设备的依赖,目前媒体终端设备的数量不能满足开发需要;为节约成本,保证效率,决定开发基于媒体终端设备实体功能的软件模拟器,即MTP Simulator。 该软件主要模拟实现媒体终端与数字影院管理系统的MTP命令交互功能,对于接收到的MTP指令,给出合理的软件响应。1.3 MTP Simulator开发前提MTP Simulator软件是为了模
14、拟实现媒体终端与数字影院管理系统交互功能,因此需要充分了解数字影院管理系统与媒体终端设备交互的细节,这就需要了解的数字影院管理系统是如何与媒体终端设备进行交互,交互的内容是什么,通过什么方式通信,最后要得到什么样的效果。开发MTP Similator的目的是为了能在本地搭建一个整体的数字影院管理系统的开发与调试环境,因此决定开发MTP Simulator,最终在本地实现整体的数字影院系统的本地开发与调试。该系统的整体构成如图1.1所示。PC(OS:Windows)VM(OS:Linux)Prj Simulator数字影院管理系统MTP Simulator图1.1 整体系统构成1.4 MTP S
15、imulator开发意义(1) 满足开发需求由于数字影院管理系统开发需要为开发人员配备一台媒体终端设备,因为在开发的同时需要对开发的功能进行调试,因此需要与媒体终端设备通信。由于媒体终端设备的数量不能满足开发需求,因此决定以软件的形式模拟实现媒体终端设备与数字影院管理系统交互的功能。(2) 节约成本,提高效率由于数字影院管理系统的开发需要与媒体终端设备进行交互,如果给每个开发者配备一台媒体终端设备,会使得开发成本很高。媒体终端设备的不足又会导致媒体终端设备的使用非常紧张,整个数字影院管理系统的开发紧张受到制约,极大地影响了项目开发的进度,为了提高效率,节约成本,项目组决定开发MTP Simul
16、ator 来代替媒体终端设备与数字影院管理系统交互的功能。2 MTP Simulator系统分析2.1 MTP Simulator可行性分析系统的可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。在进行可行性研究时需要了解和分析现有的系统,并以概括的形式表达对现有的系统的认识。系统的目标确定后,可以从技术可行性、经济可行性和操作可行性三个方面对能否实现新系统目标进行可行性分析。技术可行性方面,MTPSimulator采用开源Eclipse作为开发工具以Java语言作为开发语言,无论在其设计还是开发与安装调试以及部署上都保证作到方便快捷,且操作灵活简单。经济可行性方面,Ec
17、lipse是一款免费的开源的开发工具,在技术方面全部都是免费的。只要有懂得开发技术的开发人员,便可进行本系统的开发工作。本系统主要功能是软件实现媒体终端的功能,减少开发中对媒体终端设备的依赖,降低了开发成本。操作可行性方面,由于本系统主要是模拟实现媒体终端设备的功能,主要与数字影院管理系统进行交互,为了便于本系统的操作,本次也开发了图形操作界面,操作直观、方便。MTP Simulator软件主要采用Socket技术来传输MTP命令,在传输过程中,使用TLS传输协议对传输命令进行加密。使用线程并行处理多个命令同时请求,使用Schema和XML技术来规定MTP命令和命令返回结果。因此理论上是可以完
18、成MTP Simulator的开发。2.2 MTP Simulator的功能分析MTP Simulator是硬件媒体终端设备功能的软件实现,主要模拟媒体终端设备对于MTP消息的接收、解析和响应。MTP Simulator支持客户端采用Socket(加密/不加密)方式进行通信、文件形式批量导入方式通信和在控制台输入MTP命令方式通信,并将结果作为响应传送给客户端或者直接显示在终端屏幕上。该系统的输入输出如图2.1所示。图 2.1 MTP Simulator的输入与输出2.3 系统平台分析1硬件支持:计算机(PC)一台,处理器Pentium III800以上,内存256M以上,硬盘空间2G以上。2
19、软件支持如下表2-1所示:表21软件与版本#软件版本1WindowsXP2JDK1.6.0_293Eclipse3.72.4 所用技术分析本系统拟采用的技术如下:1. Java开发语言2. Schema技术3. Eclipse开发工具4. 安全传输层协议(TLS:Transport Layer Security)2.4.1 Java开发语言Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即 JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、
20、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java 编程语言的风格十分接近C、C+语言。Java是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java舍弃了C +语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理 而担忧。在 Java SE 1.
21、5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。2.4.2 Schema技术Schema是用于描述和规范XML文档的逻辑结构的一种语言,它最大的作用就是验证XML文件逻辑结构的正确性。可以理解成与DTD(文档类型定义)功能差不多,但是Schema在当前的WEB开发环境下优越很多。因为它本身就是一个有效的XML文档,因而可以更直观地了解XML的结构。除此之外,Schema支持命名空间,内置多种简单和复杂的数据类型,并支持自定义数据类型。由于存在这么多的优点,所以 Schema渐渐成为XML应用的统一规范。2.4
22、.3 Eclipse开发工具Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许
23、他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。2.4.4 安全传输层协议(TLS)安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。TLS 协议包括两个协议组,即TLS记录协议和TLS握手协议,每组具有很多不同格式的信息。TLS 记录协
24、议是一种分层协议。每一层中的信息可能包含长度、描述和内容等字段。记录协议支持信息传输、将数据分段到可处理块、压缩数据、应用MAC、加密以及传输结果等。对接收到的数据进行解密、校验、解压缩、重组等,然后将它们传送到高层客户机。TLS连接状态指的是TLS 记录协议的操作环境。它规定了压缩算法、加密算法和 MAC 算法。TLS记录层从高层接收任意大小无空块的连续数据。密钥计算:记录协议通过算法从握手协议提供的安全参数中产生密钥、IV和MAC密钥。TLS握手协议由三个子协议组构成,允许对等双方在记录层的安全参数上达成一致、自我认证、例示协商安全参数、互相报告出错条件。TLS握手协议:1.改变密码规格协
25、议2.警惕协议3.握手协议TLS 的最大优势就在于:TLS 是独立于应用协议。高层协议可以透明地分布在 TLS 协议上面。然而,TLS 标准并没有规定应用程序如何在 TLS 上增加安全性;它把如何启动 TLS 握手协议以及如何解释交换的认证证书的决定权留给协议的设计者和实施者来判断。TLS包含三个基本阶段:1.对等协商支援的密钥算法2.基于私钥加密交换公钥、基于PKI证书的身份认证3.基于公钥加密的数据3 MTP Simulator概要设计3.1 系统结构定义系统结构如图3.1所示。图 3.1 系统结构图MTP Simulator按照MTP命令的接收、处理、互斥控制、响应和发送结果划分功能模块
26、,并按照MTP命令的接收来源细化模块,根据用户配置文件、命令格式定义文件、Response格式定义文件等的处理功能,划分相应的功能模块。3.2 系统功能模块划分3.2.1 Socket方式的MTP命令本系统支持MTP命令以Socket的方式输入。Socket方式处理MTP命令时不需要用户进行任何操作。程序启动后会自动监听Socket连接,当有MTP命令传入时,MTP Simulator可以自动接收和处理。Socket通信又分为加密(TLS Socket)和非加密两种通信方式。系统启动的同时,用于监听Client端(即数字影院管理系统)的MTP Server也将被同时启动,并处于监听等待状态,当
27、Client端传来MTP命令时,服务端将该命令进行捕获,进行分析处理后,将Response信息返回到控制台并记录到recorder.txt中。当系统退出时,MTP Server也将被随之关闭。3.2.2 Console 方式的MTP命令本系统支持在控制台上输入MTP命令,输入的命令分为两类。一类为系统控制命令,另一类为MTP命令。(1) 系统控制命令系统控制命令包括quit、reload、dashboard。 quit:系统退出命令。reload:对本系统中所涉及到的所有文件重新加载,其中批处理文件中所设定的MTP命令也将被重新执行一遍。dashboard:启动用户操作界面,在该界面,用户能够
28、自定义配置系统参数等信息,配置后能够立即生效。(2) MTP命令除系统控制命令中包括的三种命令外,其他输入的所有命令,系统都会当做MTP命令来处理。输入的MTP命令的格式要严格按照MTP定义文件中规定的格式来输入。例如:USER LOGIN name pwd注:USER LOGIN 为命令部分,name和pwd分别为该命令的两个参数,每个字段都以空格符来隔开。(3) 无效命令若输入的命令,系统不能识别,将返回错误信息。3.2.3 File方式的MTP命令本系统支持MTP命令以Flie方式输入。在批处理文件中写入若干条MTP命令,当系统启动时,用于控制该文件的线程也随之启动,该线程会自动读取该文
29、件中的MTP命令并传递给相应的功能模块做处理。执行MTP批处理文件方式有两种,一种是通过控制台输入控制命令的方式,另一种为通过系统的轮询方式。(1) 控制台输入控制命令方式在控制台输入“reload”命令,所有与系统相关的文件都将被进行重载,其中MTP批处理文件中的若干条MTP命令将被执行。(2) 系统的轮询方式系统启动时,用于对文件进行轮询的线程也将一同启动,若在对文件的轮询过程中,出现某个文件被更改了,那么系统将对该文件进行重新加载,若该文件为MTP批处理文件,则文件中的MTP命令将被执行。注:在文件中写入一条MTP命令后就需要换行,即始终保证每一行只有一条MTP命令。3.2.4 记录re
30、corder文件本系统提供记录recorder功能。针对每一条MTP命令的执行,都将生成一条log信息。该信息包括记录log的时间、请求来源、MTP命令名、MTP命令参数、执行MTP命令所需要的延时时间、MTP命令所对应的响应信息,其中MTP命令响应信息由code、message、parameter三部分组成。正常返回消息形式如下:Time:2012-05-08 10:58:56 /记录log的生成时间RequestFrom:XXXServer /192.168.1.100:12345/MTP请求来源MessageName:GET STAT/MTP命令名MessageParameter:RUN
31、 /MTP命令参数MessageDelay:8000 /执行MTP命令所需要的延时时间MessageResponse:0000 SUCCESS 001 PLAYING/MTP命令返回结果 注:0000 为code,SUCCESS 为message,001 PLAYING 为parameter.以下是所有的错误响应类型及对照的Message信息:INVALIDMESSAGE(1001,Invalid Message);INTERNALPROCESSERROR(1002,Internal Process Error);INTERNALSYSTEMERROR(1004,Internal System
32、 Error);TIMEOUT(1007,Timeout);NOTSUPPORTED(1010,Not Supported);3.3 文件规则定制3.3.1 MTP命令格式文件每一条MTP命令,都是由命令名和参数两部分组成。具体的操作方法如下,即图3.2所示。图 0.2 命令格式文件结构图其中1表示 MTP命令的命令名;2表示本条命令中命令名部分的字段数;3 表示本条命令和参数的字段总数;4表示每一条MTP命令的起始和结束的标签。一条有效的MTP命令,必须具有一套完整的标签(如图所示的4包含的所有标签),并且在1、2、3三部分设定相应值。3.3.2 MTP命令互斥控制文件互斥控制文件描述的是M
33、TP消息之间的互斥关系,在一条MTP消息执行的过程中,可能有些MTP消息与其存在互斥关系,这些MTP消息在这条消息执行过程中可能要等待执行或者不能执行,等待执行是这条MTP消息执行后再执行。互斥控制文件以标准的XML文件格式来定义描述MTP消息之间的这种互斥关系。互斥控制文件名是MTPMutex.xml互斥控制文件内容请参照下图3.3所示。图 0.3 互斥文件结构图其中1、2、3处均输入MTP命令;2处的MTP命令与1处MTP命令为互斥关系,等待执行;3处的MTP命令与1处的MTP命令为互斥关系,不执行。3.3.3 Response 文件Response定义文件结构示例如下图3.3所示。图 0
34、.1 Response定义文件结构图其中1输入参数值 、2响应代码、3响应信息、4响应参数开始标签、5响应参数名、6响应参数类型、7响应参数值、8响应参数结束标签、9响应结束标签、10执行MTP命令的延迟时间、11响应开始标签。3.4 系统参数设定3.4.1 配置文件中设定系统参数MTP Simulator的系统参数在setting.ini文件中设定,该文件记录着MTP Simulator运行的基本参数,文件的基本格式如下图3.4所示。注:在setting.ini中,每个参数设定占一行,以“#”开头的是注释行。参数名与参数值之间以“=”连接组成的键值对。图3.4 setting.ini参数文件
35、以下列出可设定的参数:1.ip 指MTP Simulator运行时所使用的IP 地址2.port指MTP Simulator运行时所监听的端口号3.requestTimeout 指请求超时的时间4.connectTimeout 指连接超时的时间5.maxConnections 是MTP Simulator允许的最大连接数量6.clientAuthentication是否使用客户端认证(只能取值on或off)7.keystoreLocation Keystore文件的位置8.keystorePassword Keystore文件的密码9.tlsEncryption是否使用TLS加密通信(只能取值
36、on或off)10.syntaxFile指定语法定义文件11.mutexFile指定互斥文件12.batchFile指定批处理文件13.outputFile指定日志输出文件14.recordActions是否记录操作日志15.autoPolling文件自动轮询(只能取值on或off)16.pollingInterval文件自动轮询间隔3.4.2 图形界面设定系统参数Dashboard图形界面是MTP Simulator提供给用户用来动态修改系统参数的图形化操作界面,界面上的每个设定项在setting.ini文件中都有对应的设定项,图形界面说明如下图3.5所示。32145678100100311
37、1213149151617图3.5 Dashboard图形界面1. 是否使用TLS加密通讯2. 是否使用客户端认证3. 导入证书文件4. 导出证书文件5. TCP/IP设定6. 监听端口号7. 连接超时8. 请求超时9. 最大连接数10. 是否记录操作日志11. 指定语法定义文件12. 指定互斥文件13. 指定批处理文件14. 指定日志输出文件15. 文件自动轮询16. 文件自动轮询间隔17. 确认按钮3.4.3 TLS证书的导入与导出当系统使用TLS加密通信时,客户端需要使用MTP Simulator的证书进行身份验证。如果启用客户端验证,那么MTP Simulator同样需要导入客户端的证
38、书,MTP Simulator就要提供TLS证书的导入和导出操作。在导入和导出证书之前,需要设定setting.ini中的“tlsEncryption”、“clientAuthentication”、 “keystoreLocation”和“keystorePassword”参数项。(1)“tlsEncryption”参数的取值只能是“on”或“off”, “on”表示使用TLS加密,“off”表示不使用TLS加密;(2)“clientAuthentication”参数的取值同样只能是“on”或“off”, “on” 表示使用客户端验证,“off”表示不使用客户端验证;(3)“keystore
39、Location”用来指定用来维护证书文件的Keystore文件的位置;“keystorePassword”是对应的Keystore的密码。下面的例子表示使用TLS加密但不使用客户端验证,Keystore文件的位置是“/root/.keystore”,对应的密码是“changeit”。示例如图3.6所示。图3.6 setting.ini文件在配置好以上信息后,单击Dashboard界面上的的“Import Key”按钮,导入客户端的证书文件,如果单击“Export Key”按钮,将导出MTP Simulator的证书文件,对应的客户端文件请放置在certificates目录下,MTP Simu
40、lator的证书文件也可以在该目录下找到。如图3.7所示。图3.7 MTP Simulator的证书文件的目录4 MTP Simulator详细设计 4.1 系统功能逻辑简介(1) 数字影院管理系统的Server端向MTPSimulator发送MTP命令 有Client连接到MTPServer Request来源是Client(数字影院管理系统 Server) Response发送给对应的Client(2) 用户使用控制台向MTPSimulator发送MTP命令 没有Client连接到MTPServer Request的来源是控制台 Response输出到控制台 (3) 用户使用配置文件向MT
41、PSimulator发送MTP命令 没有Client连接到MTPServer Request来源是文件 Response输出到控制台 4.2模块功能逻辑4.2.1模块的总体处理逻辑MTP Simulator总体逻辑说明:启动后,程序首先加载Setting配置文件,然后顺序启动用于监听系统所涉及的所有文件是否变更的线程、Socket连接监听线程,控制台也将进入等待命令状态。当系统接收到MTP命令后,启动命令执行线程,执行成功后,返回该命令所对应的Response结果,并记录Record。逻辑图如下图4.1所示。图 4.1 MTPSimulator总体逻辑4.2.2 Socket MTP模块处理逻
42、辑1 Socket MTP请求接收首先,线程启动,负责监听请求接收,如果有请求,则获取信息,该信息包括命令类型、IP、Source类型。在这里有一个超时判断的设定,如果接收超时,则终止该请求接收线程。如果没有超时,则根据特定的Source类型创建输入输出流,然后将接收的信息封装,启动处理该命令信息的线程。SocketMTP请求处理线程的流程图如下图4.2所示。图4.2 Socket请求接收流程图2 Socket MTP命令处理处理的流程如下:【解析MTP命令】【进行互斥检查】【获取命令的Response信息】【发送Response信息】【记录操作】。解析完后,进行互斥性检查。该检查调用了Req
43、uestFilter完成runningCmds保存在RequestFilter中。其中互斥性检查有四个检查结果,分别为Delay run(延迟执行)、Run(执行)、Not run(不能执行)、LogOut(提示没有登录)。延迟执行时,获取当前时间,与处理时间进行比较,如果超时了,就向客户端发送一个error response,如果没有超时,则再进行互斥检查。执行时,获取response信息,delayTime等于0时,立即向客户端发送success response,否则,将该命令加入runningCmds队列里,延迟delay时间后,向客户端发送success response。如果是不执
44、行或者未登录,则直接向客户端发送error response。详细处理流程图如下图4.3所示。图4.3 SocketMTP命令处理流程3 Socket MTP命令解析流程这里,解析MTP命令,是获取到命令字符串,然后将其存放到一个数组中,以空格为分界,依次存放。然后获取存储MTP命令定义信息的HashTable,该HashTable中存储了MTP定义文件中定义的信息,即MTPSyntaxList.xml文件。结构为,其中String为命令名,List中存放了命令的定义信息(命令总长度为L1,命令名长度L2)。存放命令字符串数组的长度为L3。遍历HashTable的每一项,如果L1和L3相等,就
45、可视为符合命令格式。然后解析命令,获取数组A的前L2个元素,并组装成字符串S2,数组元素之间用空格隔开,比较S2与S1,S1为HashTable的键,如果相同则说明有这个命令,解析成功,否则解析失败。然后封装解析的信息。解析命令字符串时调用ResponseParser()。具体流程请参见下图4.4所示。图4.4 命令解析流程图4 Socket MTP互斥检查流程互斥判断过程:如果已登录,则获取到MTP命令互斥表,该互斥表在系统启动时创建并保存在系统内存中,查询与MTPCmd互斥的命令列表A和延迟列表B,然后获取当前在运行的命令列表C。查看A与C是否有交集,如果有,则返回Not Run,即不执行
46、。如果没有交集,则继续判断B和C是否有交集,如果有,则返回Delay Run,即延迟执行,如果没有,则返回Run,可以执行。具体流程如下图4.5所示。图 4.5 MTP互斥检查流程图5 Response处理流程具体流程如下图4.6所示。图4.6 Response处理流程图4.2.3 Console MTP处理逻辑 Console MTP的输入界面如下图4.7所示。 图4.7 Console MTP输入界面MTP的响应结果如下图4.8所示。 图4.8 MTP的响应结果1 ConsoleMTP总体处理逻辑原理同上。ConsoleMTP总体处理逻辑如下图4.9所示。图4.9 Console MTP模块处理逻辑图2 Console MTP 请求接收Console MTP请求接收流程如下图4.10所示。图4.10 Console请求接收流程图3其他逻辑处理请参考(SocketMTP 的处理逻辑)。4.2.4 File MTP模块处理逻辑File MTP的输入如下图4