在整个网络上搜索在 C 中序列化数据的方法,以便我可以通过 TCP/IP 套接字发送结构,但我找不到任何简单的方法。但我认为通过这种方式,您可以固定数据包中位的位置,从而“事实上”将其序列化。
packet *datapkt = NULL;
datapkt = (packet*)malloc(PKT_SIZE); // Allocation of memory with this size
datapkt->field = data;
......
send(datapkt);
free(datapkt);
谁能告诉我这是否是个好主意?到目前为止,它正在我的项目中工作。
提前致谢!
最佳答案
这样做时,您必须考虑两件事:
1. Endianness
2. Compiler padding
第一点将使数据根据系统的字节顺序采用不同的形式。对于大于一个字节的类型,这是一个问题。
对于第二点,您需要确保编译器没有在结构的成员之间添加任何字节。这可以通过编译器编译指示来完成。
关于c - 使用 malloc 在 C 中进行序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41360104/