Linux套接字传输增加了额外的零填充

时间:2015-08-11 11:30:24

标签: linux sockets tcp 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;

2 个答案:

答案 0 :(得分:2)

  

Linux套接字传输正在添加额外的零填充

不,当然不是。你可能没有正确阅读它。伦敦到一块砖,你忽略了recv()返回的值。

但您不应该首先使用struct作为网络协议。

答案 1 :(得分:0)

因为我们想要添加额外的零以使其长度为4字节,如@Soren所提到的那样我们使用

#pragma pack(push, 1)

#pragma pack(pop)

这对我们来说非常有效。