Linux 套接字传输正在添加额外的零填充
Linux socket transfer is adding extra zero padding
当我尝试通过 TCP 从 Linux 客户端向服务器发送数据时,我看到额外的零被添加到数据中。谁能告诉我为什么我会得到这些额外的零?数据包格式见下
#define INT32 int32_t
#define UCHAR unsigned char
#define UINT8 u_int8_t
typedef struct cstruct_t {
UINT8 typ;
UINT8 l;
unsigned char buf[20];
} cksum_t;
cstruct_t cs;
INT32 fnlength;
Linux socket transfer is adding extra zero padding
不,当然不是。您可能没有正确阅读它。 London to a brick 你忽略了 recv()
.
返回的值
但是您一开始就不应该使用 struct
作为网络协议。
因为我们不想添加额外的零来使它像@Soren 提到的那样长 4 个字节,所以我们使用
#pragma pack(push, 1)
#pragma pack(pop)
这非常适合我们。
当我尝试通过 TCP 从 Linux 客户端向服务器发送数据时,我看到额外的零被添加到数据中。谁能告诉我为什么我会得到这些额外的零?数据包格式见下
#define INT32 int32_t
#define UCHAR unsigned char
#define UINT8 u_int8_t
typedef struct cstruct_t {
UINT8 typ;
UINT8 l;
unsigned char buf[20];
} cksum_t;
cstruct_t cs;
INT32 fnlength;
Linux socket transfer is adding extra zero padding
不,当然不是。您可能没有正确阅读它。 London to a brick 你忽略了 recv()
.
但是您一开始就不应该使用 struct
作为网络协议。
因为我们不想添加额外的零来使它像@Soren 提到的那样长 4 个字节,所以我们使用
#pragma pack(push, 1)
#pragma pack(pop)
这非常适合我们。