一种基于Socket的高效自定义数据传输方法技术

技术编号:25695397 阅读:27 留言:0更新日期:2020-09-18 21:06
本发明专利技术提供了一种基于Socket的高效自定义数据传输方法,采用了一台上位机和多台下位机的数据传输系统,上位机与下位机之间采用Socket进行双向通信;上位机与下位机通过Socket建立连接后;用文件数据传输协议传输文件数据,解析后按四元组存储在数据池;然后扫描数据池,并对数据池进行清理;文件数据完成传输后,上位机按照预定义的文件数据传输协议对文件数据进行检校,如果检校失败,上位机发送指令通知下位机重新发送。本发明专利技术能够实现多台下位机与上位机的数据传输,通过自定义的传输协议,能够有效处理数据包的接收和拼接,减少在弱网环境下,由于上位机与下位机双向通信而可能产生的丢包问题,在普通的Socket数据传输的基础上,特别适应较大文件数据的传输。

【技术实现步骤摘要】
一种基于Socket的高效自定义数据传输方法
本专利技术涉及计算机通信及软件
,具体涉及一种基于Socket的高效自定义数据传输方法。
技术介绍
随着互联网技术和传感器技术的发展,越来越多的传感器能够实现远程的数据传输。目前,传感器的数据采集,大多数采用MQTT或者TPC/IP技术实现数据上传。通信的数据也绝大多数是若干字节的数据。但是在一些监测设备,例如地基形变监测雷达,一次监测的数据可以达到几MB甚至几十MB,并且是以文件数据的形式存储。如果采用传统的传输方式,一个文件的传输需要耗费很长时间,并且一旦有一个字节出错,则传输失败。并且,如果两次测量的时间小于一次数据传输的时间,则会导致两次测量数据的混淆。因此,针对这些情况,本专利技术提出了一种高效的自定义数据传输方法,在普通的Socket(套接字)数据传输的基础上,特别适应较大文件数据的传输。综上所述,急需一种基于Socket的高效自定义数据传输方法以解决现有技术中存在的问题。
技术实现思路
本专利技术目的在于提供一种基于Socket的高效自定义数据传输方法,以实现远程文件数据的传输。为实现上述目的,本专利技术提供了一种基于Socket的高效自定义数据传输方法,采用了一种数据传输系统,所述数据传输系统包括一台上位机和多台下位机,上位机与下位机之间采用Socket套接字方式进行双向通信;数据传输方法包括以下步骤:步骤一:上位机与下位机通过Socket建立连接;步骤二:采用文件数据传输协议传输文件数据,解析后按照四元组存储在数据池;所述四元组为T<文件名,当前包数,总包数,文件流>;步骤三:扫描数据池,并对数据池进行清理;步骤四:文件数据完成传输后,上位机按照预定义的文件数据传输协议对文件数据进行检校,如果检校失败,上位机发送指令通知下位机重新发送。优选地,采用Socket套接字进行双向通信时,除了指令信息外,下位机向上位机传输文件数据。优选地,所述文件数据包括文本文件、图像文件和二进制文件中的一种或多种。优选地,所述文件数据命名方式为yyyy-MM-dd-HH-mm-ss.后缀名,其中,yyyy为年份,MM为月,dd为日,HH为24进制小时,mm为分钟,ss为秒。优选地,所述文件数据传输协议的定义如下:待传输文件数据大小为M字节,按二进制格式读取,将文件数据平均分割,每一部分大小为K字节文件流,则文件被分割为L个部分文件流;其中,L=Floor(M/K),Floor()为向上取整函数;前L-1部分,每部分文件流字节数为K,第L部分文件流,字节数为M-(L-1)*K。优选地,所述文件数据传输协议包括标识、文件头和文件体;所述标识用于识别消息的起始位置,包含两个字符,占两个字节;所述文件头包括int32类型数据的雷达编号起始字节、文件名起始字节、文件流起始字节、文件总包数、和文件体字节数,以及int64数据类型的文件总字节数;int32数据类型占4字节,int64数据类型占8字节,所述文件头共占36字节;所述文件体包括依次存储二进制格式的雷达编号、文件名、校验码和文件流。优选地,所述数据池的扫描频率不低于5秒。优选地,数据池根据不同情形进行清理,具体是:A、当所有四元组中文件名只存在一种,且四元组个数小于总包数,不进行任何处理;B、当所有四元组中文件名只存在一种,且四元组个数等于总包数,将四元组中文件流按照当前包数数值从小到大拼接起来,形成新的文件写入磁盘;C、当所有四元组中文件名存在两种以上,则视为传输失败,上位机向该下位机发送失败指令,同时清除数据池内所有四元组;D、当所有四元组中文件名存在两种,且某一文件名的四元组数量超过总数90%,数据池继续接收;E、当所有四元组中文件名存在两种,且某一文件名四元组数量等于文件总包数,将该文件名的四元组中文件流按照当前包数数值从小到大拼接起来,形成新的文件写入磁盘。清除数据池中该文件名的四元组;F、当所有四元组中文件名存在两种,且任一文件名的四元组数小于该文件的总包数,且任一文件名的四元组数量低于总数60%,清除数据池,向下位机发送指令,通知该两个文件均发送失败。应用本专利技术的技术方案,具有以下有益效果:本专利技术能够实现多台下位机与上位机的数据传输,通过自定义的传输协议,能够有效处理数据包的接收和拼接,减少在弱网环境下,由于上位机与下位机双向通信而可能产生的丢包问题,在普通的Socket数据传输的基础上,特别适应较大文件数据的传输。除了上面所描述的目的、特征和优点之外,本专利技术还有其它的目的、特征和优点。下面将对本专利技术作进一步详细的说明。具体实施方式以下对本专利技术的实施例进行详细说明,但是本专利技术可以根据权利要求限定和覆盖的多种不同方式实施。实施例1:一种基于Socket的高效自定义数据传输方法,采用了一种数据传输系统,所述数据传输系统包括一台上位机和多台下位机,上位机与下位机之间采用Socket套接字方式进行双向通信;利用Socket套接字进行双向通信时,除了指令信息外,下位机向上位机传输文件数据。传输的文件数据包括文本文件、图像文件、二进制文件等。文件数据命名方式为yyyy-MM-dd-HH-mm-ss.后缀名,其中,yyyy为年份,MM为月,dd为日,HH为24进制小时,mm为分钟,ss为秒。所述文件数据传输协议的定义如下:待传输文件数据大小为M字节,按二进制格式读取,将文件数据平均分割,每一部分大小为K字节文件流,则文件被分割为L个部分文件流;其中,L=Floor(M/K),Floor()为向上取整函数;前L-1部分,每部分文件流字节数为K,第L部分文件流,字节数为M-(L-1)*K。所述文件数据传输协议包括标识(Flag)、文件头(Header)和文件体(Body);其格式说明如下:所述标识用于识别消息的起始位置,包含两个字符“*#”,占两个字节;所述文件头包括int32类型数据的雷达编号起始字节、文件名起始字节、文件流起始字节、文件总包数、和文件体字节数,以及int64数据类型的文件总字节数;int32数据类型占4字节,int64数据类型占8字节,所述文件头共占36字节;其中,雷达编号起始字节为雷达编号在本消息中的起始位置;文件名起始字节为文件名在本消息中的起始位置;校验码起始字节为校验码在本消息中的起始位置;文件流起始字节为分割后的文件流在本消息中的起始位置;文件总字节数为该文件总的字节数;文件当前包数表示当前发送的第几个包,从1开始计数;文件总包数表示文件总共分成多少个包;Body部分字节数为Body部分的字节数。所述文件体包括依次存储二进制格式的雷达编号、文件名、校验码和文件流。所述文件流为分割后一个包的文件流。对于文件数据传输,上位机与某台下位机通过Socket建立连接后,接收按照上述定义的协议组织的数据,本文档来自技高网...

【技术保护点】
1.一种基于Socket的高效自定义数据传输方法,其特征在于,采用了一种数据传输系统,所述数据传输系统包括一台上位机和多台下位机,上位机与下位机之间采用Socket套接字方式进行双向通信;数据传输方法包括以下步骤:/n步骤一:上位机与下位机通过Socket建立连接;/n步骤二:采用文件数据传输协议传输文件数据,解析后按照四元组存储在数据池;所述四元组为T<文件名,当前包数,总包数,文件流>;/n步骤三:扫描数据池,并对数据池进行清理;/n步骤四:文件数据完成传输后,上位机按照预定义的文件数据传输协议对文件数据进行检校,如果检校失败,上位机发送指令通知下位机重新发送。/n

【技术特征摘要】
1.一种基于Socket的高效自定义数据传输方法,其特征在于,采用了一种数据传输系统,所述数据传输系统包括一台上位机和多台下位机,上位机与下位机之间采用Socket套接字方式进行双向通信;数据传输方法包括以下步骤:
步骤一:上位机与下位机通过Socket建立连接;
步骤二:采用文件数据传输协议传输文件数据,解析后按照四元组存储在数据池;所述四元组为T<文件名,当前包数,总包数,文件流>;
步骤三:扫描数据池,并对数据池进行清理;
步骤四:文件数据完成传输后,上位机按照预定义的文件数据传输协议对文件数据进行检校,如果检校失败,上位机发送指令通知下位机重新发送。


2.根据权利要求1所述的一种基于Socket的高效自定义数据传输方法,其特征在于,采用Socket套接字进行双向通信时,除了指令信息外,下位机向上位机传输文件数据。


3.根据权利要求2所述的一种基于Socket的高效自定义数据传输方法,其特征在于,所述文件数据包括文本文件、图像文件和二进制文件中的一种或多种。


4.根据权利要求3所述的一种基于Socket的高效自定义数据传输方法,其特征在于,所述文件数据命名方式为yyyy-MM-dd-HH-mm-ss.后缀名,其中,yyyy为年份,MM为月,dd为日,HH为24进制小时,mm为分钟,ss为秒。


5.根据权利要求4所述的一种基于Socket的高效自定义数据传输方法,其特征在于,所述文件数据传输协议的定义如下:
待传输文件数据大小为M字节,按二进制格式读取,将文件数据平均分割,每一部分大小为K字节文件流,则文件被分割为L个部分文件流;
其中,L=Floor(M/K),Floor()为向上取整函数;前L-1部分,每部分文件流字节数为K...

【专利技术属性】
技术研发人员:杜年春谢翔沈向前黄毅廖超
申请(专利权)人:中国有色金属长沙勘察设计研究院有限公司
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1