我有以下内容:
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?
答案 0 :(得分:2)
frame
是一个char指针数组,我假设系统上的char指针是4个字节。这就是为什么sizeof(frame)
是24个字节的原因。你可能想要一组字符代替。
// array of char, not char *
char frame[sizeof(USHORT) + sizeof(ULONG)];