目标:连接远程主机,通过FTP下载到本地,校验(CRC,MD5)
步骤:
1、远端主机送来相关参数及校验码。
2、与主机建立TCP连接。
3、FTP server 返回一个220响应。
4、发送用户名,成功则返回331。
ret = snprintf(session_tmp,sizeof(session_tmp),"USER %s/r/n",user.user_name);
5、 发送密码。
ret = snprintf(session_tmp,sizeof(session_tmp),"PASS %s/r/n",user.pass_word);
返回230
6、发送FEAT指令。
ret = snprintf(session_tmp,sizeof(session_tmp),"%s/r/n","FEAT");
根据不同的返回值使用不同的校验方式。
7、打开远程目录。
if(ftp_common_cmd(ftp_sock,cmd_line,"CWD","250") == 1)
8、设置为2进制传输。
if(ftp_common_cmd(ftp_sock," I","TYPE","200") == 1)
9、得到文件长度。
ret = snprintf(session_tmp,sizeof(session_tmp),"%s %s","SIZE",remote_filename);
if(ftp_common_cmd(ftp_sock_fd,session_tmp,"SIZE","213") == - 1)
得到的格式需要转换下才是文件的长度。
10、得到文件的时间
ret = snprintf(session_tmp,sizeof(session_tmp),"%s %s","MDTM",remote_filename);
if(ftp_common_cmd(ftp_sock_fd,session_tmp,"MDTM","213") == - 1)
11、send PASV command。
ret = snprintf(session_tmp,sizeof(session_tmp),"%s","PASV");
if(ftp_common_cmd(ftp_sock_fd,session_tmp,"PASV","227") == - 1)
12、又建立一个TCP连接???
13、创建一个本地的文件。
sprintf(data,"/%s/%s",Put_FileDir,remote_filename);
14、根据不同的校验方式校验文件。
15、断开连接。