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)

这非常适合我们。