一种数据传输解析方法与装置的制造方法

文档序号:9787108阅读:167来源:国知局
一种数据传输解析方法与装置的制造方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种不限大小端模式的数据传输通用解析方 法。
【背景技术】
[0002] 在不同的操作平台中,数据最底层存储(二进制方式)的模式并不相同,分为大端 模式和小端模式,所谓大端模式是指在一个需要存储的数据中,该数据的低位(即权值较小 的后面几位)保存在内存中相应存储位置的高地址中,而数据的高位,则保存在内存中相应 存储位置的低地址中。如:一个4字节32位变量的16进制值为0x12345678,在内存中以大端 模式存储的方式如表1所示:
[0003] 表 1
[0004]
[0005]所谓小端模式,与大端模式恰恰相反,在一个需要存储的数据中,该数据的低位保 存在内存中相应存储位置的低地址中,而数据的高位,则存储在内存中相应存储位置的高 地址中。如:一个4字节32位变量的16进制值为0x12345678,在内存中以小端模式存储的方 式如表2所示:
[0006]表2
[0009] 数据在跨平台通信时,在传统数据通信领域,由于两个平台中数据最底层存储的 大小端模式并不匹配,从发送端到接收端解析数据就造成很大麻烦,需要进行数据大小端 匹配调整再经过移位操作进行数据还原,如果传输数据中还存在多包头数据段定义,则需 要重复进行多次大小端数据匹配和数据移位操作。比如:
[0010] -个以大端模式存储的系统发送4字节数据通过TCP/IP协议到一个以小端模式存 储的系统中,则需要如下解析:
[00111 Unsigned char**p;//数据读取内存指针
[0012] Unsigned int RecvData;//接收端定义变量
[0013] *p = 0x4000 ;
[0014] RecvData=*[*p]*0x100 0000+*[*p+l]*0x100 00+*[*p+2]*0x100 +*[*p+3];
[0015] 如果一个以小端模式存储的系统发送4字节数据通过TCP/IP协议到一个以小端模 式存储的系统中,则需要如下解析:
[0016] RecvData=*[*pI+3]*0χ1000000+*[*ρ+2]*0χ10000+*[*ρ+1]*0χ100+*[*ρ];
[0017] 这只是4个字节单变量数据的解析,如果发的是多字节或者不定长字节多变量多 包头的二进制数据,这个解析是灾难性的。因此,亟需一种更优的技术方案来解决这一技术 问题。

【发明内容】

[0018] 本发明的目的是提供一种数据传输解析方法,用以解决现有数据传输解析方法中 数据处理复杂、耗费CPU资源多、人工解析出错概率大的问题。
[0019] 为实现上述目的,本发明的方案包括:
[0020] -种数据传输解析方法,包括如下步骤:
[0021 ]步骤1):定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体 对象;
[0022] 步骤2):定义接收端的结构体对象;
[0023] 步骤3):进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收 端结构体对象的每个子项中。
[0024] 进一步的,所述发送端的数据存储模式是小端存储模式或大端存储模式,所述接 收端的数据存储模式是大端存储模式或小端存储模式。
[0025]进一步的,所述发送端与接收端的通信采用Socket函数进行通信。
[0026] -种数据传输解析装置,其特征在于,包括如下模块:
[0027] 模块1:用于定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构 体变量;
[0028] 模块2:用于定义接收端的结构体变量;
[0029] 模块3:用于进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接 收端结构体对象的每个子项中。
[0030] 进一步的,所述发送端的数据存储模式是小端存储模式或大端存储模式,所述接 收端的数据存储模式是大端存储模式或小端存储模式。
[0031] 进一步的,所述发送端与接收端的通信采用Socket函数进行通信。
[0032] 本方法通过发送端与接收端利用匹配数据结构体对象指针对接,不用进行大小端 模式匹配和移位操作进行数据还原,直接通过结构体对象指针接收,让系统内部定义的结 构体子项进行自动对应达到数据自动还原的目的。这样通过结构体对象的子项自动对应达 到数据自动还原的方式,能够避免人工解析时出错概率高的问题,同时占用的CPU资源较 少,而且不需要对数据进行逐一的解析,有效的减少了数据处理的复杂程度,提高了数据传 输时进行数据解析的效率。
【具体实施方式】
[0033] 下面对本发明做进一步详细的说明。
[0034] 本发明通过结构体对象指针读取内存子项自动对应的方式,不需要数据移位解析 也不必考虑发送端是大端模式还是小端模式,唯一需要发送端发送时是以结构体对象指针 进行发送的,接收端接收时是以结构体对象指针进行接收的,发送端和接收端结构体定义 必须保证一致。
[0035] 下面通过一个具体的例子对本发明的技术方案做详细说明。
[0036] 在Linux操作系统中,数据在最底层存储的模式为大端模式,而Windows操作系统 中在最底层中数据存储的模式则是小端模式,在二者进行数据传输通信时采用结构体对象 的方式进行通信。在这里,设置Linux操作系统为发送端,Windows为接收端,二者通过Tcp/ Ip协议网路发送数据。在进行数据发送之前,首先对需要发送的变量进行定义,并为他们赋 值,具体的,定义和赋值过程根据下述代码进行:
[0037] g-Send-zaihe-inf 〇. f-4M-count = 1050;
[0038] g-Send-zaihe-info · f-end-f ile-id = 9900;
[0039] g-Send-zaihe-info·f-end-height = 16780;
[0040] g-Send-zaihe-info · f-end-jd = 134 · 65;
[0041 ] g-Send-zaihe-info, f-end-wd = 35.67;
[0042] g-Send-zaihe-info · f-kaiji-num= 10;
[0043] g-Send-zaihe-info · f_task_id = 0g;
[0044] g-Send-zaihe-info · f-start-time · nian = 2015;
[0045] g-Send-zaihe-inf o · f-start-time · yue = 4;
[0046] g_Send_zaihe_inf o. f_start_time. ri = 10 ;
[0047] g-Send-zaihe-info · f-start-time · shi = 15;
[0048] g-Send-zaihe-info · f-start-time · fen = 55;
[0049] g-Send-zaihe-info · f-start-time .miao = 50;
[0050] g_Send_zaihe_info. f_end_time .nian = 2016 ;
[0051 ] g_Send_zaihe_inf o. f_end_time. yue = 04 ;
[0052] g_Send_zaihe_inf o. f_end_time. ri = 10 ;
[0053] g_Send_zaihe_info. f_end_time. shi = 15 ;
[0054] g_Send_zaihe_info. f_end_time. fen = 10 ;
[0055] g_Send_zaihe_info. f_end_time .miao = 10 ;
[0056] conn_fd=accept(sock_fd?(struct sockaddr*)&cli-addr,&cli_len);
[0057] send(conn_fd,&g_Send_zaihe_info,sizeof(g_Send_zaihe_info),0);
[0058] 在对需要发送的数据进行定义和赋值完成后,则开始设置发送端的结构体对象, 在这里发送端的结构体数据变量为"g_Send_zaihe_info",其具体定义过程如下:
[ΟΟ?Ο]发送端结构体变量"g_Send_zaihe_info"定义完成后,定义和赋值的各需要发送 的数据在发送端结构体变量"g_Send_zaihe_info"中的存储格式为:
[0065] 在接收端Windows操作系统中设置接收端结构体对象"m_Recv_data",具体设置过 程如下:
[0067] 设置完成以后,则开始从发送端到接收端的通信,发送端到接收端的通信采用 Socket函数进行通信,从上述接收端和发送端中结构体对象的设置过程中可以看出,接收 端和发送端使用了同一个结构体对象来发送和接收数据。在数据通信过程中,发送端以结 构体对象的方式进行数据发送,而接收端同样采用结构体对象接收,具体的,发送端"g_ Send_zaihe_info"结构体对象所发送的每个子项数据成功解析到接收端"m_Recv_data"结 构体对象的每个子项中,接收端"m_Recv_data"结构体对象指针进行系统内部自动匹配。
[0068] 以上给出了本发明具体的实施方式,但本发明不局限于所描述的实施方式。在本 发明给出的思路下,采用对本领域技术人员而言容易想到的方式对上述实施例中的技术手 段进行变换、替换、修改,并且起到的作用与本发明中的相应技术手段基本相同、实现的发 明目的也基本相同,这样形成的技术方案是对上述实施例进行微调形成的,这种技术方案 仍落入本发明的保护范围内。
【主权项】
1. 一种数据传输解析方法,其特征在于,包括如下步骤: 步骤1):定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体对象; 步骤2):定义接收端的结构体对象; 步骤3):进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收端结 构体对象的每个子项中。2. 根据权利要求1所述的一种数据传输解析方法,其特征在于,所述发送端的数据存储 模式是小端存储模式或大端存储模式,所述接收端的数据存储模式是大端存储模式或小端 存储模式。3. 根据权利要求1所述的一种数据传输解析方法,其特征在于,所述发送端与接收端的 通?目米用Socket函数进彳丁通{目。4. 一种数据传输解析装置,其特征在于,包括如下模块: 模块1:用于定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体变 量; 模块2:用于定义接收端的结构体变量; 模块3:用于进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收端 结构体对象的每个子项中。5. 根据权利要求4所述的一种数据解析装置,其特征在于,所述发送端的数据存储模式 是小端存储模式或大端存储模式,所述接收端的数据存储模式是大端存储模式或小端存储 模式。6. 根据权利要求4所述的一种数据解析装置,其特征在于,所述发送端与接收端的通信 米用Socket函数进彳丁通{目。
【专利摘要】本发明涉及一种数据传输解析方法与装置,包括如下步骤:1):定义发送端需要发送的数据量并赋值,同时定义和设置发送端的结构体对象;2):定义接收端的结构体对象;3):进行数据传输,将发送端结构体对象所发送的每个子项数据解析到接收端结构体对象的每个子项中。本方法通过结构体对象的子项自动对应达到数据自动还原的方式,能够避免人工解析时出错概率高的问题,同时占用的CPU资源较少,而且不需要对数据进行逐一的解析,有效的减少了数据处理的复杂程度,提高了数据传输时进行数据解析的效率。
【IPC分类】G06F3/06
【公开号】CN105549900
【申请号】CN201510887897
【发明人】张衡
【申请人】中国航空工业集团公司洛阳电光设备研究所
【公开日】2016年5月4日
【申请日】2015年12月5日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1