我有 2 个程序一个客户端和一个服务器。客户端发送一个 4 字节的 ascii 命令
client command: BD?\r
server reads:
服务器代码
while(1) {
int numbytes = 0;
printf("MAIN: waiting for commands\n");
memset(theRecvBuffer, '\0', THE_BUFFER_SIZE);
numbytes = recv(theCSock, theRecvBuffer, THE_BUFFER_SIZE, 0);
if(numbytes == 0) {
printf("client socket closed\n");
break;
}
if(numbytes == -1) {
printf("cmd loop received socket error: %s\n", strerror(errno));
break;
}
}
服务器的 recv 调用返回 4 个字节,但缓冲区中填充了 NULL 字节。有什么可能导致 recv 调用丢失缓冲区信息吗?无论如何,我可以使用 print 语句调试 recv 调用中发生的事情吗?我受到限制,因为该程序位于具有不同芯片组的设备上,因此我无法使用调试器。errno 没有帮助,因为它返回 4 个字节,因此没有错误。