ROHC协议库测试与改造(二)

原创 2016年05月30日 12:52:32

前言

这次我们继续深入剖析ROHC的协议库。
我们这次选择深入到代码里面去看。
我们选择的路径是

../rohc-1.7.0/app/performance/

其中,app路径表示的是,此路径下存放的是官方做出来的一些成熟的应用程序,app路径下有以下几个文件夹
这里写图片描述
之所以选择performance文件夹,是因为performance功能没有任何多余的添加,比较好下手。
在performance文件夹下执行make命令,编译生成项目执行文件。
然后我们就可以开始了~。

正文

在命令行下,我们发现有两个可执行文件:
rohc_gen_stream
rohc_test_performance
很明显,我们需要先利用rohc_gen_stream生成出数据流,然后放到rohc_test_performance里测试。
我们先执行
./rohc_gen_stream
./rohc_test_performance
看看应该怎么使用这两个程序
(其实要用的话很简单啦。。。)
然后我们发现一些问题→_→

  • rohc_gen_stream生成的文件有两种:压缩后 / 未压缩。但是数据完全是随机的。。。没有输入文件。。。(后来发现每一次生成出来的都是一样的)
  • rohc_test_performance的入口参数可以是 压缩 / 未压缩的文件,它会执行 压缩/解压 功能。但是,它没有文件输出!

所以我们想啊,如果能把rohc_gen_stream里生成文件的代码,移植到rohc_test_performance里,那该多好啊→_→

于是,我们打开test_performance.c
找到执行压缩的那段。
这里写图片描述
很明显,其实所谓压缩,就是调用了 rohc_compress4() 函数。

rohc_compress4() 函数的定义在comp.h里,是官方给的函数,后缀的4代表这是第4版本。因为这个库在不断修改,更新,所以之前的函数有些漏洞被填上了,为了兼容使用旧函数的工程,所以命名里加了数字。

然后,我们打开rohc_gen_stream.c,找到生成压缩后的数据文件的那段。
这里写图片描述
很明显,下面红色方框的部分就是输出文件的代码了。
然后欢天喜地地复制粘贴到performance程序里,make,运行。
然后报错。
执行rohc_buf_push时,出现offset错误,大意是offset不满足头文件某个assert的不等式要求。
为什么会这样呢?
我们看看gen程序在压缩前都对后面要处理的变量做了什么。
这里写图片描述
→_→。。。所以说,在push之前,需要先拓展包的长度,然后pull,难怪当时会出现offset不足的错误,因为长度没拓展,根本不够放。
改完之后保存。
解压那边也对应修改,不过rohc_packet就要换成ip_packet了。
然后重新make,运行,成功~。

FPGA综合系统设计(三):贪吃蛇游戏(键盘+VGA)

“FPGA综合系统设计”是博主新开的一个系列,主要讲述在设计一个完整的系统时采用的方法。博主计划在后面有时间的时候再开一个“FPGA基础设计”的系列,专门讲述FPGA设计一些单独模块的方法,如IIC协...

数字电路设计之VGA的字母显示的verilog实现

module vga_initials_top( mclk, btn, sw, hsync, vsync, red, green, blue ); inpu...

Linux下安装ROHC协议库并测试

这次,我们从零开始,在Ubuntu系统中,安装RoHC协议库,并且编译、运行官方自带的测试文件。...

报头压缩-Linux下安装ROHC协议库

ubuntu,rohc,协议库

ROHC协议简介

无线传输协议中有各种各样的报文,当我们单次传输的数据比报文头还短时,报头就成了一个累赘。我们可以利用报头的变化规律对报头进行压缩,提高传输效率。ROHC就是这么一种协议。 本文是我看了一些论文和英文版...

ROHC协议分析与建模

  • 2013年09月05日 23:09
  • 383KB
  • 下载

基于SyncML的funambol dm开源项目的改造应用(二) - 搭建SCTS测试环境

这次主要讲funambol-dm-server开发环境搭建, 以及结合SCTS-DM工具进行测试验证.  首先准备好JBOSS3.2.3不建议更高版本, 因为源码最高支持该版本, 搭建会方便些,  如...
  • hxx688
  • hxx688
  • 2012年01月06日 15:39
  • 2709

[4]AMQP(高级消息队列协议) ----改造QPID JMS-0.9 API 对 SSLContext的 支持

默认情况下QPID JMS-0.9 API对SSLConext没有提供相应的接口. 但是在笔者项目中,又需要其对SSLContext对象的支持。这个问问深深的难住了笔者2~3天时间,笔者通过深入的研究...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ROHC协议库测试与改造(二)
举报原因:
原因补充:

(最多只允许输入30个字)