Linux Socket重新读取旧数据

时间:2011-11-20 06:28:25

标签: c linux

我正在编写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值。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

我怀疑问题是你假设你的阅读成功了,并且你读的数据和你要求的一样多。

情况不一定如此!

你完全绝对需要从“read()”获得返回值。它可能比您的缓冲区少,它可能是“-1”(错误)。