北京北大青鸟学校:如何编写一个下载程序(上)

我们每天都会在网上下载很多软件,无论是办公软件还是游戏软件,都能在网上很轻松的下到本地电脑。那么我们自己能否编写一套下载程序呢?今天,北京北大青鸟学校就为大家介绍一下如何编写一个非常简单的下载小程序。

开发环境:WINDOWS 2000 + VC++6.0
使用语言:C
实现功能:下载网络资源

首先我们要建立一个文件夹来存放下载的软件,利用Directory();就可以轻松实现。代码如下:
int Directory()
{
//建立目录,如果成功返回1,不成功返回0
    int D;
      D=CreateDirectory(c:mydownload,NULL);
        return D;
}

当文件夹存在时,函数将什么也不做,达到文件夹不存在时建立文件夹的目的。
我们利用URLDownloadToFile();这个函数来实现下载,我们来简单的看一下这个函数的简单介绍:
URLDownloadToFile函数原型:
HRESULT URLDownloadToFile(      
                     LPUNKNOWN pCaller,
                     LPCTSTR szURL,
                     LPCTSTR szFileName,
                     DWORD dwReserved,
                     LPBINDSTATUSCALLBACK lpfnCB
                    );(北京北大青鸟学校)
这个API是在URLMON.DLL文件中的一个导出函数,简单的实现了把一个文件从WEB服务器下载本机的功能,其实用这个函数还可以帮我们处理了断点续传,缓存等等的功能。

URLDownloadToFile的五个参数:
第一个 一般为NULL。
第二个 参数就是要下载文件的目标URL,完整路径。
第三个 是本地保存路径,也是完整路径。
第四个 是保留,必须为0。
第五个 是指向一个IBindStatusCallback接口的指针,这就类似一种回调机制,你可以参考这些来活动当前下载进度,选择是否继续下载等等.

在这个简单的程序我们只关心第二和第三个参数,其他的通通设置成0。具体代码如下:
int downfile(char *downurl)
{
    //下载文件保存到c:mydownload目录下。
  HRESULT h;
  char *filename;            
  char *tk;              
  char url[MAX_PATH];        
  char path[MAX_PATH];        
  char st[]=/;
  int reslut=0;          

    strcpy (url,downurl);           //将下载路径拷贝到URL中  
  tk=strtok(url,st);                 // 获取下载路径中的文件名

  while(tk!=NULL)
      {
        filename=tk;    
        tk=strtok(NULL,st);
      }

    strcpy(path,c:mydownload);     //将c:mydownload拷贝到PATH中
  strcat(path,filename);               //连接字符串,得到完整保存路径      
   
      if(file(path))               //调用判断文件名是否重名函数
      {
          printf(连接中……n);
      h= URLDownloadToFile(0,downurl,path,0,0); //下载文件
    if(h==S_OK)                       //判断是否下载完成          
      {
          printf(文件下载成功!n);
      printf(文件保存路径:%sn,path);
      return reslut;                 //函数返回0
      }
        else
        {
        reslut=1;
          return reslut;             //函数返回1
        }

      }
      else
        {
        exit(0);
        }
}(北京北大青鸟学校)

  根据函数返回值我们来进行判断:
        i=downfile(u);
        if(i==0)
        {
          printf(谢谢使用。n);
        }
            else
              {
              printf(n未找到下载文件,请检查下载地址是否正确n);
              }
(北京北大青鸟学校,未完)

北大青鸟网上报名
北大青鸟招生简章