Socket recv()总是返回0



这行得通:

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

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

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

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

在第一个例子中,您将blockSize地址(通过数组衰减)传递给recv()

在第二个例子中,您将blockSize传递给recv(),类型转换为指针。由于blockSize为0,指针实际上是nullptr。您需要传递blockSize地址。另外,size_t不能保证是4字节,所以使用(u)int32_t代替,例如:

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

相关内容

  • 没有找到相关文章

最新更新