小编Geo*_*Lee的帖子

在套接字上发送一个结构,在C中使用正确的填充和字节顺序

我有几个结构被定义为通过不同的操作系统(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;
Run Code Online (Sandbox Code Playgroud)

数据存储在文本文件中.数据格式如下:

  • 123
  • 馅饼
  • 脆皮

Struct1a存储为3个单独的参数.但是,struct2是两个独立的参数,第二行和第三行都存储在char str []中.问题是当我通过多个网络写入服务器时,数据未正确接收.有许多空间可以分隔结构中的不同参数.当我写入服务器时,如何确保正确的发送和填充?如何正确存储数据(动态缓冲区或固定缓冲区)?

write的例子:write(fd,&a,sizeof(typedef struct a)); 它是否正确?

struct2的问题接收侧输出:

  • 123(,)
  • 0(,馅饼)
  • 0(地壳)

正确的输出

123(馅饼,地壳)

c struct tcp padding endianness

5
推荐指数
1
解决办法
5356
查看次数

标签 统计

c ×1

endianness ×1

padding ×1

struct ×1

tcp ×1