还是老问题。
有一系列数据要在网络上传输,可能的数据有简单数据,列表数据,树结构数据。如
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大小都可控制,而且可以边接收边解析。