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

Why is the received buffer size bigger than originally sent via socket?

本文关键字:套接字 大于 缓冲区 小大 为什么      更新时间:2023-10-16

>我有以下内容:

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 个?

frame是一个

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

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