递归下载FTP目录的win32 api实现和php实现

本文介绍了如何使用Win32 API和PHP分别实现递归下载FTP目录的方法,涵盖了初始化连接、目录遍历及文件下载等关键步骤,适合需要进行FTP文件操作的开发者参考。
摘要由CSDN通过智能技术生成

 

这里的递归下载指的是用 recursive 方式处理目录,即把该目录下的所有文件和子目录原样下载到本地。一个目录就是一棵树,子目录就是树中的内结点,文件和空目录就是树中的叶子结点,遍历树的算法就是深度优先和广度优先,因此写程序递归下载的思路也就是深度优先或者广度优先这两种思路。
思路和代码实现都非常简单。这里最主要的地方在于 FTP 协议规定在一次 session 中只能遍历一个目录,这是从晚上十点写代码到深夜两点多的“收获”。见 MSDN 中的说明:
FtpFindFirstFile is similar to the Win32 FindFirstFile function. Note, however, that only one FtpFindFirstFile can occur at a time within a given FTP session. The enumerations, therefore, are correlated with the FTP session handle. This is because the FTP protocol allows only a single directory enumeration per session.
以上来自于 Platform SDK 文档, MFC 中的关于 WinInet 的文档中没有说这些。
别的就没有了,把使用 WinInet 实现的代码贴到下面, php 里面不用管这些 FTP 协议的细节,因此使用 PHP 来实现递归下载非常简单, PHP 的实现代码贴在 C++ 代码后面。
#include <iostream >
#include <queue>
using namespace std;
 
typedef struct _Q {
    CString strRemoteDir , strLocalDir ;
    _Q( ) {
       strRemoteDir = "" ;
       strLocalDir = "" ;
    }
    _Q( LPCTSTR r, LPCTSTR l) {
       strRemoteDir = r;
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值