网络通信 XML

peimoxu 2009-07-28 11:18:39
还是老问题。
有一系列数据要在网络上传输,可能的数据有简单数据,列表数据,树结构数据。如

struct Device
string ip;
ushort httpPort;
string username;
string password;
//.......
};//实际的成员相当多

struct Group
{
string name;
vector<Group> subGroups;
vector<Devicce> devices;
};

Devicce aDevice;//简单数据
vector<Device> aDeviceList;//列表数据
Group group;//树结构数据


初步定用通信头+XML报文发送,通信头如下:
-------------------------------------
| 版本 | 数据长度 | 通信类型 | 保留 |
-------------------------------------
在实际应用中,如把整个数据组成单个XML串,列表数据和树结构数据所组的XML串会相当大,会达到几M到几十M,这样接收BUFFER和解析时用的BUFFER都很大,不方便操作,不知大家在做这方面程序时怎么处理的。
如:
<group name="">
<device ip="" ...>
...
</device>
<device ...>
...
</device>
...
...
</group>

我现在的方案是把数据分成小的XML,比如列表数据就把每个列表项组成的XML,树结构就把每个结点组成的XML。
然后按下面方式发送,不知是否可行
-----------------------------------------------
| HEAD | XML | HEAD | XML | HEAD | XML .......
-----------------------------------------------
这样发送和接收的BUFFER大小都可控制,而且可以边接收边解析。

...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
peimoxu 2009-08-01
  • 打赏
  • 举报
回复
SOAP 好像也是一次性发送一个大的完整XML的,假如这个XML报太大发送解析也不方便吧
peimoxu 2009-07-31
  • 打赏
  • 举报
回复
还有人吗
vercitti 2009-07-31
  • 打赏
  • 举报
回复
你的应用方向有个比较成熟的结构
叫做SOAP

apache的xerces c++或者IBM的gsoap可以借鉴下

都是比较成熟的库
peimoxu 2009-07-30
  • 打赏
  • 举报
回复
D
peimoxu 2009-07-29
  • 打赏
  • 举报
回复
??
socoola 2009-07-29
  • 打赏
  • 举报
回复
可以啊,只要你发送端和接收端发包和解包原则一致

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧