0

这确实有效:

char blockSize[4];
int r = recv(socket, blockSize, 4, 0);

这不起作用。它总是返回零,为什么?

size_t blockSize = 0;
int r = recv(socket, (char*)blockSize, 4, 0);

这不是主要问题,我知道如何将 char 数组转换回 size_t。但我只想知道为什么它不起作用。

4

1 回答 1

0

在第一个示例中,您将(通过数组衰减)的地址传递.blockSizerecv()

在第二个示例中,您传递to的,类型转换为指针。由于为 0,因此指针有效。您需要传递的地址。此外,不保证为 4 个字节,因此请改用,例如:blockSizerecv()blockSizenullptrblockSizesize_t(u)int32_t

uint32_t blockSize = 0;
int r = recv(socket, (char*)&blockSize, 4, 0);
于 2021-10-29T05:12:06.580 回答