recv()行尾

时间:2013-09-13 03:12:33

标签: c recv eol

while ((client = accept(sock, (struct sockaddr *) &c, (socklen_t *) &clientlength)) > 0)
{
  int h = 0; 
  int i = 0;
  char el[4] = "\r\n\r\n";

  while (recv(client, r , 1, 0) != 0)
  {
    if (h==4) 
      break;

    if (*r == el[h])
    {
      h++;
    }

    *r++;
    i++;
  }
}

这是一个服务器程序,我正在使用recv()从客户端接收输入请求。

我使用"\r\n\r\n"表示行尾,这意味着在客户端输入一些输入后,他们必须按两次Enter才能发送消息。

但是当我用这个while循环运行我的程序时,客户端实际上必须按Enter键三次才能传递消息,为什么它是这样的,我如何修复它以便我只需要按Enter键两次?

1 个答案:

答案 0 :(得分:0)

移动h == 4检查如下

    if(*r==el[h]){
    h++;
    }

    r++;
    i++;

    if (h==4) break;