为什么接收的缓冲区大小比最初通过套接字发送的大?

时间:2017-05-08 04:01:24

标签: c++ winapi networking

我有以下内容:

struct sockaddr_in* server = (struct sockaddr_in*)sockAddr;

ULONG addr = htonl(server->sin_addr.s_addr);
USHORT port = server->sin_port;

char* frame[sizeof(USHORT) + sizeof(ULONG)];

memcpy(frame, &port, sizeof(USHORT));
memcpy(&frame[2], &addr, sizeof(ULONG));


int result = send(s, (const char*)frame, sizeof(frame), 0);

USHORT的大小是2个字节而ULONG 4,为什么在接收字节总结果时是24?

1 个答案:

答案 0 :(得分:2)

frame是一个char指针数组,我假设系统上的char指针是4个字节。这就是为什么sizeof(frame)是24个字节的原因。你可能想要一组字符代替。

// array of char, not char *
char frame[sizeof(USHORT) + sizeof(ULONG)];