现在的位置: 首页 > 综合 > 正文

FTP client程序

2014年01月19日 ⁄ 综合 ⁄ 共 2577字 ⁄ 字号 评论关闭

目标:连接远程主机,通过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、断开连接。

 

 

抱歉!评论已关闭.