- 论坛徽章:
- 0
|
网络传输过程结构体序列化的问题
在网络传输过程中,需要将函数的参数序列化,
也就是将函数的参数一次copy到一个固定的内存块中发送出去
例如:
int rtStart(int handle, int path, char sth); |
对于此函数无非是:
memcpy(buffer, &handle, sizeof(int));
memcpy(buffer + sizeof(int), &path, sizeof(int));
memcpy(buffer + 2*sizeof(int), &sth, sizeof(char)); |
目前遇到的问题是:
函数类型如下:
int rtStart(int handle, int path, A* sth);
typedef struct
{
int a;
int b;
B* c;
}A;
|
然后
typedef struct
{
int a;
int b;
C* c;
}B; |
...
...
这样的嵌套有好多层,
而且类似的函数有一百多个,如果单纯的依靠手工
一个一个内存拷贝的话显然太stupid了,
有没有一种可以通用的序列化功能,
类似于
int rtStart(int handle, int path, A* sth)
{
ser(1);//1是函数类型号,预定义
...
} |
ser函数和调用者函数无关,然后就将rtStart参数序列化?
不考虑用xml传输,因为网络传输太频繁,xml效率无法满足要求
或者ACE里面有没有类似的功能? |
|