本发明专利技术涉及一种数据传输解析方法与装置,包括如下步骤:1):定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体对象;2):定义接收端的结构体对象;3):进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收端结构体对象的每个子项中。本方法通过结构体对象的子项自动对应达到数据自动还原的方式,能够避免人工解析时出错概率高的问题,同时占用的CPU资源较少,而且不需要对数据进行逐一的解析,有效的减少了数据处理的复杂程度,提高了数据传输时进行数据解析的效率。
【技术实现步骤摘要】
本专利技术涉及通信
,尤其涉及一种不限大小端模式的数据传输通用解析方 法。
技术介绍
在不同的操作平台中,数据最底层存储(二进制方式)的模式并不相同,分为大端 模式和小端模式,所谓大端模式是指在一个需要存储的数据中,该数据的低位(即权值较小 的后面几位)保存在内存中相应存储位置的高地址中,而数据的高位,则保存在内存中相应 存储位置的低地址中。如:一个4字节32位变量的16进制值为0x12345678,在内存中以大端 模式存储的方式如表1所示: 表 1所谓小端模式,与大端模式恰恰相反,在一个需要存储的数据中,该数据的低位保 存在内存中相应存储位置的低地址中,而数据的高位,则存储在内存中相应存储位置的高 地址中。如:一个4字节32位变量的16进制值为0x12345678,在内存中以小端模式存储的方 式如表2所示:表2 数据在跨平台通信时,在传统数据通信领域,由于两个平台中数据最底层存储的 大小端模式并不匹配,从发送端到接收端解析数据就造成很大麻烦,需要进行数据大小端 匹配调整再经过移位操作进行数据还原,如果传输数据中还存在多包头数据段定义,则需 要重复进行多次大小端数据匹配和数据移位操作。比如: -个以大端模式存储的系统发送4字节数据通过TCP/IP协议到一个以小端模式存 储的系统中,则需要如下解析:[00111 Unsigned char**p;//数据读取内存指针 Unsigned int RecvData;//接收端定义变量 *p = 0x4000 ; RecvData=**0x100 0000+**0x100 00+**0x100 +*; 如果一个以小端模式存储的系统发送4字节数据通过TCP/IP协议到一个以小端模 式存储的系统中,则需要如下解析: RecvData=**0χ1000000+**0χ10000+**0χ100+*; 这只是4个字节单变量数据的解析,如果发的是多字节或者不定长字节多变量多 包头的二进制数据,这个解析是灾难性的。因此,亟需一种更优的技术方案来解决这一技术 问题。
技术实现思路
本专利技术的目的是提供一种数据传输解析方法,用以解决现有数据传输解析方法中 数据处理复杂、耗费CPU资源多、人工解析出错概率大的问题。 为实现上述目的,本专利技术的方案包括: -种数据传输解析方法,包括如下步骤:步骤1):定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体 对象; 步骤2):定义接收端的结构体对象; 步骤3):进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收 端结构体对象的每个子项中。 进一步的,所述发送端的数据存储模式是小端存储模式或大端存储模式,所述接 收端的数据存储模式是大端存储模式或小端存储模式。进一步的,所述发送端与接收端的通信采用Socket函数进行通信。 -种数据传输解析装置,其特征在于,包括如下模块: 模块1:用于定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构 体变量; 模块2:用于定义接收端的结构体变量; 模块3:用于进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接 收端结构体对象的每个子项中。 进一步的,所述发送端的数据存储模式是小端存储模式或大端存储模式,所述接 收端的数据存储模式是大端存储模式或小端存储模式。 进一步的,所述发送端与接收端的通信采用Socket函数进行通信。 本方法通过发送端与接收端利用匹配数据结构体对象指针对接,不用进行大小端 模式匹配和移位操作进行数据还原,直接通过结构体对象指针接收,让系统内部定义的结 构体子项进行自动对应达到数据自动还原的目的。这样通过结构体对象的子项自动对应达 到数据自动还原的方式,能够避免人工解析时出错概率高的问题,同时占用的CPU资源较 少,而且不需要对数据进行逐一的解析,有效的减少了数据处理的复杂程度,提高了数据传 输时进行数据解析的效率。【具体实施方式】 下面对本专利技术做进一步详细的说明。 本专利技术通过结构体对象指针读取内存子项自动对应的方式,不需要数据移位解析 也不必考虑发送端是大端模式还是小端模式,唯一需要发送端发送时是以结构体对象指针 进行发送的,接收端接收时是以结构体对象指针进行接收的,发送端和接收端结构体定义 必须保证一致。 下面通过一个具体的例子对本专利技术的技术方案做详细说明。 在Linux操作系统中,数据在最底层存储的模式为大端模式,而Windows操作系统 中在最底层中数据存储的模式则是小端模式,在二者进行数据传输通信时采用结构体对象 的方式进行通信。在这里,设置Linux操作系统为发送端,Windows为接收端,二者通过Tcp/ Ip协议网路发送数据。在进行数据发送之前,首先对需要发送的变量进行定义,并为他们赋 值,具体的,定义和赋值过程根据下述代码进行: g-Send-zaihe-inf 〇. f-4M-count = 1050; g-Send-zaihe-info · f-end-f ile-id = 9900; g-Send-zaihe-info·f-end-height = 16780; g-Send-zaihe-info · f-end-jd = 134 · 65; g-Send-zaihe-info, f-end-wd = 35.67; g-Send-zaihe-info · f-kaiji-num= 10; g-Send-zaihe-info · f_task_id = 0g; g-Send-zaihe-info · f-start-time · nian = 2015; g-Send-zaihe-inf o · f-start-time · yue = 4; g_Send_zaihe_inf o. f_start_time. ri = 10 ; g-Send-zaihe-info · f-start-time · shi = 15; g-Send-zaihe-info · f-start-time · fen = 55; g-Send-zaihe-info · f-start-time .miao = 50; g_Send_zaihe_info. f_end_time .nian = 2016 ; g_Send_zaihe_inf o. f_end_time. yue = 04 ; g_Send_zaihe_inf o. f_end_time. ri = 10 ; g_Send_zaihe_info. f_end_time. shi = 15 ; g_Send_zaihe_info. f_end_time. fen = 10 ; g_Send_zaihe_info. f_end_time .miao = 10 ; conn_fd=accept(sock_fd?(struct sockaddr*)&cli-addr,&cli_len); send(conn_fd,&g_Send_zaihe_info,sizeof(g_Send_zaihe_info),0); 在对需要发送的数据进行定义和赋值完成后,则开始设置发送端的结构体对象, 在这里发送端的结构体数据变量为"g_Send_zaihe本文档来自技高网...
【技术保护点】
一种数据传输解析方法,其特征在于,包括如下步骤:步骤1):定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体对象;步骤2):定义接收端的结构体对象;步骤3):进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收端结构体对象的每个子项中。
【技术特征摘要】
【专利技术属性】
技术研发人员:张衡,
申请(专利权)人:中国航空工业集团公司洛阳电光设备研究所,
类型:发明
国别省市:河南;41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。