登陆 | 免费注册(只需一分钟) | 会员中心

聚宝网   购物专题 基金专题 性专题 饮食专题 教育专题 生活大参考 园林资讯 园艺库 健康专题
  论文专题 家庭养花 园林景观 盆景奇石 激情图库 农业资料库 园林古建 英文站 花卉栽培

聚宝网免费为您提供 最新IT资讯

 

首页 > 编程文档 > C++
怎样用XML来封装网络数据包?
时间:2007-06-17  www.jubao163.com  来源: 不详

比如我的数据包格式:
头部:
unsigned short  opttype 操作类型  
unsigned short  headsize 数据包头部长度
unsigned short  packsize 数据包长度
数据
BYTE data  数据
怎样用XML来封装呀?
从没用过XML,请详细点好吗?
谢谢!

---------------------------------------------------------------

如果data数据是二进数据,而且数据很大的话,这样做不太适合的.
---------------------------------------------------------------

unsigned short  headsize 数据包头部长度
unsigned short  packsize 数据包长度
=====>按照xml标准做,你不需要加这些东西,它们可以省略,这也是xml统一标准的好处;标准xml解析器能区别数据元

另外:xml封装的是字符串,其中不可以有ascii 0这样的字符,而且其不适应包装大量二进制数据

你的数据可以这样包装:
<head>
<cmd>10001</cmd>                                         //====> unsigned short opttype 
<data>3401234n1234onc21349q234flksdfafa9erqwerqwerqwerqer</data>   //==>BYTE data  数据
</head>

再从网上download一个xml解析器,做为你程序的模块即可
---------------------------------------------------------------

也可以直接用结构体封装
---------------------------------------------------------------

以前都是用结构封装的
这次换了个系统设计师,非叫用XML不可,不知道处于什么想法?XML有很多优势吗?
-------------------------------------------------------------------------
1.就效率来说,肯定是结构体来得高,XML肯定是比较慢的。
2.两者都可以设计出可扩展的协议来。
3.相比之下,使用XML设计出的可扩展协议更加方便,但是在传输二进制数据时,
可以会有限限制,不过这也跟XML Parser的不一样而不一样的。不过到目前为止,
本人还没看到可以很好的进行二进制数据传输的Parser,但是,他可以通过编成
其他的编码方式来进行传输,但是这样将会进一步损失效率。而使用结构体就没
有这方面的问题,但是设计出可扩展协议,将对开发人员要求比较高,在使用时
也要多些注意。
---------------------------------------------------------------

你不是对stl很熟吗,看源码吧。很多xml用temple,stl做的,开源的大把

http://www.vckbase.net/code/listcode.asp?mclsid=22&sclsid=2201&page=1

http://www.firstobject.com/ 里有两个常用的xml解析器
一个依赖于MS的<afxtempl.h>叫Markup
另一个是stl的只需<string>叫MarkupSTL,个人更喜欢用这个,在你的模型中用MarkupSTL.h/cpp即可,它有demo




推荐文章
联盟网站

浙ICP备 :07003766号 Copyright © 2001-2007 JUBAO163,All rights reserved.