我正在编写Linux套接字程序,当我从套接字读取数据时,我的缓冲区中的先前读取中包含旧数据值。我正在使用read()调用,但我也尝试过recv(),两者都会导致同样令人沮丧的错误。以下是三个读取调用:
read(client_sock, &test, sizeof(test));
read(client_sock, &test2, sizeof(test2));
read(client_sock, &test3, sizeof(test3));
test,test2和test3都是char,并且正在尝试读取客户端写入的char值。任何帮助将不胜感激。
答案 0 :(得分:5)
我怀疑问题是你假设你的阅读成功了,并且你读的数据和你要求的一样多。
情况不一定如此!
你完全绝对需要从“read()”获得返回值。它可能比您的缓冲区少,它可能是“-1”(错误)。