【问题标题】:Linux Socket re-reading old dataLinux Socket重读旧数据
【发布时间】:2011-11-20 06:28:25
【问题描述】:

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

【问题讨论】:

  • 您真的是在系统调用中一次读取一个字节吗?
  • 您似乎没有检查来自read() 的返回值。

标签: c linux


【解决方案1】:

我怀疑问题在于您假设您的读取成功,并且您读取的数据与您要求的一样多。

不一定是这样!

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

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2010-11-14
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多