如何检查我的FTP服务器的<crlf>

时间:2016-05-09 09:20:43

标签: c ftp netcat

我创建了一个小型FTP服务器,并提供了一些可用的命令。

以下是我如何检查用户的输入,看它是否与我的链接列表中的某个命令匹配:

int check_cmd(char *buff, char *cmd)
{
  int end;

  if (strstr(buff, cmd) != buff)
    return (-1);
  end = strlen(cmd);
  if (buff[end] != '\0' && buff[end] != ' ' && buff[end] != '\n')
    return (-1);
  return (0);
}

void read_command(t_client *client, t_cmd *lexer)
{
  t_cmd *current;

  bzero(client->buff, MAX_READ + 1);
  server_read(client);
  current = lexer;
  while (current != NULL) // Go through the linked list, checking if it matches
    {
      if (check_cmd(client->buff, current->cmd) == 0) // It matches a command !
        {
          current->ptr(client); // Calls the appropriate function
          return ;
        }
      current = current->next;
    }
  server_write(client, "Invalid command.\n");
}

但是使用-C的{​​{1}}选项会默认在每个命令发送netcat,但是,我不会检查它。

如何检查\r\n是否通过命令行传递?

1 个答案:

答案 0 :(得分:0)

我看到的第一件事就是结尾应该是:

end = strlen(cmd) - 1;

因为C中的数组是以0而不是1开头的索引访问的。

要检查字符串末尾的a,请确定end-1是否为&#39; \ r&#39;结束是&#39; \ n&#39;:

if(buff[end-1] == '\r' && buff[end] == '\n')
{
  // do something
}