在找到 0x0000 字节后接收 return

recv return after 0x0000 byte found

这是我的代码:

其他部分代码,连接建立,数据传输成功。

现在的问题是我得到了以下输出:

根据记录,recv() doc 帮助不大...

当您调用 recv 时,您应该使用该函数的返回值来确定您应该处理的字节数。

相反,您使用 sizeof(buffer) 来确定循环次数,这是不正确的。 bufferchar *,而 sizeof(char *) 通常是 4 或 8,具体取决于 32 / 64 位。

所以这个:

for (int i=0; i< sizeof(buffer); i++)

应该是:

int test = recv(TCP_server.newsockfd, buffer, 40, MSG_WAITALL );
// assuming that test >= 0
for (int i=0; i < test; i++)