1.windows 2000 server 默认的配置就支持断点续传的。
2.网络蚂蚁就是一个很好的例子:
  打开netant,下载一个比较大的文件,再查看它的log就可以发现些什么的  

解决方案 »

  1.   

    再请参与啊,我使用InternetSetFilePointer来移动指针,始终返回-1的错误值
      

  2.   

    直接API方式应该不行的,用
    BOOL FtpCommand(
        IN HINTERNET hConnect,
        IN BOOL fExpectResponse,
        IN DWORD dwFlags,
        IN LPCTSTR lpszCommand,
        IN DWORD_PTR dwContext,
        OUT HINTERNET *phFtpCommand
    );加上rest rang.... 应该就可以实现了。详细的请参见FTP协议规范
      

  3.   

    http://www.vchelp.net/source/source_ii.htm
      

  4.   

    vchelp关于ftp的源码有好几个呢,也许对你有用。
      

  5.   

    是啊,vchelp有一个支持HTTP/FTP多线程和断点的源码,去看看吧
      

  6.   

    请问有谁用过InternetSetFilePointer函数吗,请指教
      

  7.   

    据MSDN文档,该函数只能用在HTTP/HTTPS 上面。
    hFile=InternetOpenUrl(....);
    InternetSetFilePointer(hFile,bytes,NULL,FILE_BEGIN,0);不能在FTP下面用哦
      

  8.   

    但是我使用InternetSetFilePointer总是返回-1啊,这表示错误啊,请高手继续参与讨论,不胜感激
      

  9.   

    所以你不能用这个函数来对FTP操作!!!!!另外,如果你连接的server不支持CONTENT-LENGTH,你也没有没有办法续传。
      

  10.   

    HTTP源码
    #include "stdafx.h"
    #include "windows.h"
    #include "wininet.h"
    #include "stdio.h"
    #pragma comment (lib,"wininet")int main(int argc, char* argv[])
    {
    HINTERNET hinet,hhttp;
    hinet=InternetOpen("U",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,NULL);
    printf("%08X\n",hinet);
    hhttp=InternetOpenUrl(hinet,"http://aus",NULL,NULL,NULL,NULL);
    printf("%08X\n",hhttp);
    printf("%d\n",InternetSetFilePointer(hhttp,100,NULL,FILE_BEGIN,NULL));
    return 0;
    }
      

  11.   

    FTP 代码// winint.cpp : Defines the entry point for the console application.
    //#include "stdafx.h"
    #include "windows.h"
    #include "wininet.h"
    #include "stdio.h"
    #pragma comment (lib,"wininet")
    typedef BOOL(WINAPI *FtpCommand)(HINTERNET ,BOOL ,DWORD ,LPCTSTR ,DWORD_PTR ,HINTERNET*);int main(int argc, char* argv[])
    {
    HINTERNET hinet,hftp,hconnect;
    hinet=InternetOpen("U",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,NULL);
    printf("%08X\n",hinet);
    hftp=InternetConnect(hinet,"aus",10000,"qzl","qzl",INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,NULL);
    printf("%08X\n",hftp);
    HMODULE hlib=LoadLibrary("wininet.dll");
    FtpCommand ftpcommand=(FtpCommand)GetProcAddress(hlib,"FtpCommandA");
    printf("%d\n",ftpcommand(hftp,0,FTP_TRANSFER_TYPE_ASCII, "REST 100",NULL,NULL));
    // now u can use FtpGetFile(..........); return 0;
    }
      

  12.   

    to Kevin_Qing,如果Ftp过程中,网络断开的话,怎样才能达到续传的目的呢,请一定要帮忙的
      

  13.   

    to Kevin_Qing,如果Ftp过程中,网络断开的话,怎样才能达到续传的目的呢,请一定要帮忙的
      

  14.   

    to Kevin_Qing:
    请帮忙啊,请问你有这样的代码吗,请帮忙啊。我在加100分给你
      

  15.   

    计算已经写到磁盘上面的文件大小nSize,下回从nSize-rollback 开始读。rollback一般设为4096左右,主要是避免文件最后几个字节写入有误。另外,上面给的代码只能seek成功,但是还不能Read,跟winapi的实现有关系。所以最好自己写ftp client。有问题请 mailto :[email protected]
      

  16.   

    Kevin_Qing你好:
    很高兴你能够帮助我,我做这个断点下载已经很长时间了,但是一直都找不到合适的方法,我看到了你的回复,现在还没有开始测试,我有一个疑问,我查阅了MSDN,也没有能够看出来FtpCommand能够实现seek这个功能,你能够给我指点吗,谢谢。另外seek以后,我是否应该使用InternetReadFile来读取文件呢,也请你指导,我太笨,请你不要见笑
    我已经发EMAIL给你了,希望你能够帮忙