实现FTP内部标准命令USER、PASS、PORT、PASV、LIST、STOR、RETR
USER和PASS上次已经分析过了,这里就不再分析:
1、命令映射
typedef struct ftpcmd
{
const char *cmd; //命令字符串
void (*cmd_handler)(session_t *sess); //函数指针
} ftpcmd_t;
static ftpcmd_t ctrl_cmds[] = {
/* 访问控制命令 */
{"USER", do_user }, //如果是USER命令,则执行do_user方法
{"PASS", do_pass },
{"CWD", do_cwd },
{"XCWD", do_cwd },
{"CDUP", do_cdup },
{"XCUP", do_cdup },
{"QUIT", do_quit },
{"ACCT", NULL }, //这种命令没有执行函数
{"SMNT", NULL },
{"REIN", NULL },
/* 传输参数命令 */
{"PORT", do_port },
{"PASV", do_pasv },
{"TYPE", do_type },
{"STRU", do_stru },
{"MODE", do_mode },
/* 服务命令 */
{"RETR", do