- 論壇徽章:
- 0
|
網(wǎng)絡(luò)傳輸過程結(jié)構(gòu)體序列化的問題
在網(wǎng)絡(luò)傳輸過程中,需要將函數(shù)的參數(shù)序列化,
也就是將函數(shù)的參數(shù)一次copy到一個(gè)固定的內(nèi)存塊中發(fā)送出去
例如:
int rtStart(int handle, int path, char sth); |
對(duì)于此函數(shù)無非是:
memcpy(buffer, &handle, sizeof(int));
memcpy(buffer + sizeof(int), &path, sizeof(int));
memcpy(buffer + 2*sizeof(int), &sth, sizeof(char)); |
目前遇到的問題是:
函數(shù)類型如下:
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; |
...
...
這樣的嵌套有好多層,
而且類似的函數(shù)有一百多個(gè),如果單純的依靠手工
一個(gè)一個(gè)內(nèi)存拷貝的話顯然太stupid了,
有沒有一種可以通用的序列化功能,
類似于
int rtStart(int handle, int path, A* sth)
{
ser(1);//1是函數(shù)類型號(hào),預(yù)定義
...
} |
ser函數(shù)和調(diào)用者函數(shù)無關(guān),然后就將rtStart參數(shù)序列化?
不考慮用xml傳輸,因?yàn)榫W(wǎng)絡(luò)傳輸太頻繁,xml效率無法滿足要求
或者ACE里面有沒有類似的功能? |
|