sender工具是通用的发包工具,支持xml文件,在使用sender工具之前需要先把头文件中的结构体转化成xml文件,然后进一步使用sender工具实现发包功能。下面将详细描述此工具的使用:
1获取结构体对应的xml文件
Ø xml转换器功能:把文件中的一个struct结构转换成sender工具支持的xml格式保存在xml文件里,且生成的文件名为:结构体名.xml
Ø xml转换器工具使用方法:
./gen_xml.pl 结构体名称 网络序标志 header1.h header2.h ……
Ø 工具使用说明:
·结构体名称需要与头文件中结构体名一致
·网络序标志此结构体是否以网络序形式发送:1,网络序:0,主机序
·后面可以跟多个头文件,支持结构体嵌套替换、typedef替换
·工具将结构体转换为xml格式文件保存在xmldata/结构体名.xml文件中,工具将xml结构中的变量值使用环境变量进行了填充,被填充的环境变量统一保存在xmldata/结构体名.datal文件中。环境变量的格式为:结构体名_结构体字段名
·在实际使用的时候,可以修改xml文件中某个结构体变量对应的环境变量名,并可以通过在shell脚本中重新赋值的方式来设定此环境变量的值
Ø 示例:
·头文件如下:
test.h
struct my_test
{
int cmd;
int ip;
int port;
int reserved;
}
Struct response
{
Int result;
}
·使用xml转换器进行转换:
./gen_xml.pl my_test 1 test.h
·生成的xml文件以及data文件如下:
my_test.xml
==================================================================
<packet type="struct" repeat="1" value="my_test" endian="1">
<cmd type="int" value="$my_test_cmd" repeat="1"/>
<ip type="int" value="$my_test_ip" repeat="1"/>
<port type="int" value="$my_test_port" repeat="1"/>
<reserved type="int" value="$my_test_reserved" repeat="1"/>
</packet>
my_test.data
==================================================================
export my_test_cmd=
export my_test_ip=
export my_test_port=
export my_test_reserved=
==================================================================
·使用xml生成器转换:
./gen_xml.pl response 1 test.h
·生成的xml文件以及data文件如下:
response.xml
<packet type="struct" repeat="1" value="response" endian="1">
<result type="int" value="$response_result" repeat="1"/>
</packet> ==============================================================
response.data
==============================================================
export response_result=
==============================================================
·可以对上面产生的data文件中的环境变量赋值,如下:
export my_test_cmd=2
export my_test_ip=1234
export my_test_port=345
export my_test_reserved=0
2使用sender收发包
Ø 通过写shell脚本调用sender工具实现发包功能
Ø 具体使用方法:(假定发送my_test结构体的内容后,得到的回复是response结构体的内容)使用上面示例的结构体my_test.h,以及使用转换器生成的xml文件以及data文件(下面为脚本文件my_test.sh):
source my_test.data
SRTSERVER=10.81.15.41
PORT=20120
sender -i $SRTSERVER -p $PORT –s my_test.xml –c response.xml
Ø 在实际的使用环境中可以修改xml文件中结构体变量对应的环境变量的名字,然后在shell脚本中对此环境变量重新复制,并使用export使此环境变量生效。
(baiduqa,邮箱:qablog@baidu.com)