发送侧:
TS:01:15:47 :send a PF,magic=fc010000,pts=9620a7fd,len=3403, buf[24]:
0,0,1,fc,0,0,0,0,fd,a7,20,96,0,0,0,0,3,34,0,0,0,0,0,0,
接收侧:
Got a PFrame!
magic=fc010000,pts=9620a7fd00000000,len=0
buf[24]:
0 0 1 fc 0 0 0 0 fd a7 20 96 00 0 0 3 34 0 0 0 0 0 0
typedef struct{
int magic;
unsigned long long pts;
unsigned int length;
}PF_HEADER_T; 这个结构体长度是多少?24字节吗?
首先,我打印出来:
sizeof(int)=4,sizeof(long)=4,sizeof(longlong)=8
再打印:Note: sizeof(PF_HEADER_T)=24 看来问题就出在这里,这个结构体是按8字节对齐的。有点奇怪!居然是8字节对齐。
typedef struct{
char magic;
char ver;
char reserved;
char action;
unsigned int length;
}CTRL_HEADER_T;
这个结构体的长度又是8,说明是按字节对齐的。
增加一个预编译选项#pragma pack(1),这样就正确了。