【问题标题】:Reading a line from a socket从套接字读取一行
【发布时间】:2009-10-20 20:11:46
【问题描述】:

我正在编写一些代码,其中每当行以换行符或回车结束时,我需要从套接字获取一行。该行应该存储在缓冲区中。

 n = recv(sock, &ch, 1, 0);
  if (n > 0)
  {
   if (ch == '\r')
   {
       // do stuff
   }
     //
  }
   //

我在一段时间内使用这样的代码,但它没有任何线索我该怎么做。

已编辑:我希望从套接字中读取一行并返回以进行解析。这应该发生[每行读取的笔。

【问题讨论】:

  • 您将需要提供比这更完整的代码示例,和/或更好地描述“不工作”的含义(您希望发生什么,什么是实际发生)。

标签: c linux sockets


【解决方案1】:

这类似于最近题为“getline over a socket”的问题。

答案是你不应该这样做。如果客户端没有发送下一行会发生什么?你的程序会挂起。

从您的代码 sn-p 来看,您似乎没有检查错误代码。这些将表明您的代码“不工作”的原因,并指出从哪里开始寻找问题。

【讨论】:

    【解决方案2】:

    1) 也许你有回车/换行?

    2) 可能 ch 溢出了?

    3) 也许您的流是二进制的,而 \r 对非 EOL 有效?

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 1970-01-01
      • 2011-10-29
      • 2019-04-02
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多