【发布时间】:2015-04-11 20:55:39
【问题描述】:
假设我有一个定义如下的 C 结构:
typedef struct servData {
char max_word[MAX_WORD];
char min_word[MAX_WORD];
int word_count ;
} servSendData ;
其中“MAX_WORD”可以是任何值。 现在,如果我有这个结构的一个实例:
servSendData myData ;
如果我填充这个实例然后通过网络发送它,考虑到我希望我的服务器和客户端在 64 位系统或 32 位系统上运行,这里是否会有任何可移植性问题系统。
我将按如下方式发送和接收数据:
//server side
strcpy(myData.max_word, "some large word") ;
strcpy(myData.min_word, "small") ;
myData.word_count=100 ;
send(sockFd, (char*)&myData, sizeof(myData);
//client side
recv(sockFd, (char*)&myData, sizeof(myData);
printf("large word is %s\n", myData.max_word) ;
printf("small word is %s\n", myData.min_word) ;
printf("total words is %d\n", myData.word_count) ;
【问题讨论】:
-
您应该研究 TLV(类型、长度、值)编码和“序列化”以及 XDR(外部数据表示)。
标签: c portability