【发布时间】:2011-08-05 07:52:45
【问题描述】:
我定义了几个结构以通过不同的操作系统(tcp 网络)发送。 定义的结构是:
struct Struct1 { uint32_t num; char str[10]; char str2[10];}
struct Struct2 { uint16_t num; char str[10];}
typedef Struct1 a;
typedef Struct2 b;
数据存储在文本文件中。 数据格式如下:
- 123
- 派
- 地壳
Struct1 a 存储为 3 个单独的参数。但是, struct2 是两个单独的参数,第 2 行和第 3 行都存储到 char str[] 中。问题是当我通过多个网络写入服务器时,没有正确接收数据。有许多空格分隔结构中的不同参数。写入服务器时如何确保正确发送和填充?如何正确存储数据(动态缓冲区或固定缓冲区)?
写示例:write(fd,&a, sizeof(typedef struct a));这是正确的吗?
struct2 的接收端输出问题:
- 123( , )
- 0(,派)
- 0(地壳,)
正确的输出
123(馅饼,地壳)
【问题讨论】:
-
您应该发布您用于发送和接收的代码的 sn-ps,我们无法真正猜出您做错了什么。
-
看看RFC 4506 XDR: External Data Representation Standard,它描述了如何对数据进行编码以便在机器之间传输。
标签: c tcp padding endianness struct