一种基于文件共享协议的跨平台数据即时传输方法

文档序号:9931320阅读:603来源:国知局
一种基于文件共享协议的跨平台数据即时传输方法
【技术领域】
[0001]本发明涉及信息安全领域,特别涉及一种基于文件共享协议的跨平台数据即时传输方法。
【背景技术】
[0002]由于硬件性能限制,信息安全领域对于数据的分析和处理基本都是通过PC完成,当原始数据存在于手机、PDA等设备上时,则需要先将数据传输至PC。而现有的设备数据传输方法大多只在单一平台或操作系统上实现的,对于跨平台数据传输的需求则几乎只能通过中间储存介质(如U盘、SD卡等)来完成,这显著增加了产品操作的复杂度,同时对数据的完整性也带来挑战。
[0003]另外,数据的提取通常只能单向进行,即设备到PC,如果不借助其他储存介质,则无法满足PC数据回传至设备的需求。基于这种现状,一种能够跨平台即时进行数据双向传输的方法就显得很有必要。

【发明内容】

[0004]本发明针对现有技术的不足,提供一种基于文件共享协议的跨平台数据即时传输方法,解决数据的提取通常只能单向进行,即设备到PC,如果不借助其他储存介质,则无法满足PC数据回传至设备的的问题。
[0005]为解决以上问题,本发明采用的技术方案如下:一种基于文件共享协议的跨平台数据即时传输方法,包括如下步骤:S1、解析SMB协议的结构和规范,在此基础上对依赖TCP协议的SMB协议进行二次定义;S2、根据二次定义的SMB协议,均以TCP协议为基础,对通用的数据传输接口及指令进行定义,使基于Android、Windows及Linux平台之外的平台能够应用该传输方法;S3、创建分别对不同平台符合既定传输接口及指令的数据传输模块。
[0006]作为优选,SI的具体方法如下:
[0007]1.1解析SMB协议,SMB协议有协议头和协议指令两个关键部分;
[0008]1.2SMB协议二次定义
[0009]1.2.1协议头二次定义,在结构体中添加PLATFORM字段用于定义平台信息;
[0010]1.2.2协议指令二次定义,对SMB协议原有的指令进行重定义以及扩展如下:
[0011]定义NEGOTIATE指令,用于与目标平台初次沟通;
[0012]定义SESS10N_SETUP指令,初始化已建立连接,并获取协商一致的连接信息;
[0013]定义TREE_C0NNECT指令,获取权限范围内的目录信息;
[0014]定义CREATE指令,用于创建数据传输目录及数据文件;
[0015]定义OPEN指令,用于打开数据源;
[0016]定义READ指令,用于读取数据源中的数据;
[0017]定义WRITE指令,用于向目标数据源写入数据;
[0018]定义CLOSE指令,用于结束所有操作;
[0019]定义DISCONNECT指令,用于断开连接,释放资源。
[0020]作为优选,S2的具体方法如下:
[0021 ] 2.1创建连接,Get_connect1n,用于获得平台间的通讯链路;
[0022]2.2初始化SMB连接
[0023]Init_SMB_Connect1n,利用NEGOTIATE与SESS10N_SETUP指令与目标平台的SMB协议进行沟通并获得有效SMB连接信息;
[0024]2.3获取目标平台可操作目录
[0025]Get_Target_path,利用TREE_C0NNECT指令获取有效的操作路径及目录列表;
[0026]2.4创建目标平台文件
[0027]Get_Target_Input_Stream,利用CREATE指令在目标平台上创建目标文件或文件夹,对文件夹,获得一个目标平台的输入流;
[0028]2.5开启目标数据源
[0029]Get_Target_Output_Stream,传入目标路径,利用OPEN指令开启文件,并获得一个目标平台上输出的数据流;
[0030]2.6读取目标数据源数据
[0031 ] Read_Target_Data,通过READ指令从数据流中获得数据;
[0032]2.7向目标数据源写入数据
[0033]Write_Target_Data,通过WRITE指令向数据流中写入数据;
[0034]2.8关闭所有数据流
[0035]Close_Stream,通过CLOSE指令关闭与目标数据源的所有数据流;
[0036]2.9断开连接,Disconnect,通过DISCONNECT指令释放与目标平台的SMB连接及TCP连接,并释放相关资源。
[0037]作为优选,仓Ij建Windows平台符合既定传输接口及指令的数据传输模块:
[0038]3.1 Windows平台上数据connect流程,该流程即为windows与其他平台或windows平台创建SMB连接的流程;
[0039]3.1.I创建socket连接
[0040]3.1.2调用GetSMBConnect1n函数,该函数用于创建基于TCP的SMB连接,参数为具体的SMB连接的连接信息及获取到的socket连接;
[0041 ] 3.1.3调用GetTargetPath函数,该函数用于获取目标平台的可操作目录;
[0042]3.2Windows平台上数据push流程,该流程即为windows向其他平台或windows平台主动推送信息的流程;
[0043I 3.2.1调用Get InputStrearn函数,该函数用于获取一个本地输入流,参数为connect1n 的句柄;
[0044]3.2.2调用GetOutputStream函数,该函数用于获取一个远程输出流,通过该流可以向指定的文件写入信息,参数为远程文件的SMB路径;
[0045]3.2.3循环调用Read函数,该函数用于不断读取文件数据;
[0046]3.2.4循环调用Write函数,该函数用于向流中写入数据;
[0047]3.2.5调用Close函数,该函数用于关闭流,并做文件保存工作;
[0048]3.3Windows平台上数据pul I流程,该流程即为windows从其他平台或windows平台主动获取数据的流程;
[0049]3.3.1调用Get InputStream函数,该函数用于获取一个远程输入流,参数为connect1n 的句柄;
[0050]3.3.2调用GetOutputStream函数,该函数用于获取一个本地文件输出流,通过该流可以向指定的文件写入信息,参数为本地文件的绝对路径;
[0051 ] 3.3.3循环调用Read函数,该函数用于不断读取流中的数据;
[0052]3.3.4循环调用Write函数,该函数用于向本地文件写入数据;
[0053]3.2.5调用Close函数,该函数用于关闭流,并做文件保存工作;
[°°54] 3.3Windows平台上结束操作断开连接流程
[°°55] 3.3.1调用Disconnect函数,该函数用于释放连接;
[0056]3.3.2调用底层socket的disconnect函数,该函数用于释放底层socket连接。
[0057]作为优选,Linux平台通用实现方式如下:
[0058]对于支持原生SMB协议的系统,其实现方式与操作流程与Windows平台一致;对于不支持源生SMB协议的L i nux系统,可以通过以下流程使SMB服务生效,然后使用与w i ndows无异的操作方式完成跨平台传输;流程如下:(1)安装SAMBA服务;(2)配置本解决方案的指令包;(3)重启samba服务。
[0059]作为优选,Android平台通用实现方式如下:
[0000](I)开启自定义的Service,监听指定端口,通常为445;
[0061 ] (2)在Servi ce中注册广播,用于接受SMB指令;
[0062](3)在广播接收到Connect指令时,取出广播接收到的Bundle中的连接信息,并创建与目标平台间的基于TCP的socket连接,并创建smb链接;
[0063](4)接收到Push指令时,取出广播接收到的bundle中的传输信息,其他传输操作与windows平台对Push的处理一致;
[0064](5)接收到Pull指令时,取出广播接收到的bundle中的传输信息,其他传输操作与windows平台对Pul I的处理一致;
[0065](6)接收到Disconnect指令时,广播提醒Service执行Disconnect方法,释放smb与socket连接,并注销广播。
[0066]本发明的方法可以达到以下效果:一种基于文件共享协议的跨平台数据即时传输方法,与现有的数据传输通用方案相比,主要有以下几点优势:1、跨平台传输无障碍,对PC及大部分移动终端的操作系统都有很好的支持;2、通过安全链路,直接从数据源向目标数据传输数据,避免第三方存储介质可能产生的数据错误,保证了数据的完整性和安全性;
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1