本帖最后由 jerrywjh 于 2009-08-24 11:03:37 编辑

解决方案 »

  1.   

    用http的函数,然后你会得到一个指针嘛,就可以用他的函数得到那个文件的大小~
    但我也试过,总会少下载那么一些~也在郁闷中
      

  2.   

    数据长度不知,也不知结束符,怎么分配buffer,我也想知道哎
      

  3.   

    一般以 \r\n\r\n 为结束符来操作。
      

  4.   

    最近问的人挺多的   一个人的马甲 ???
    WinInet + Socket实现  不是很难   关键你要对HTTP协议有所了解
      

  5.   

    HTTP返回的时候有文件长度  因此  文件问题很好解决
      

  6.   

    采用递增的方法吧,第一次分配1m,等差不多用完了,在分1+k的内存,k是每次递增的量。
    然后把第一次的复制到第二次的内存那里,继续下载.........重复........
    不过时间上会有一点的消耗...............
      

  7.   

    dirdirdir3的方法效率太低了吧, 我感觉不太可行
      

  8.   

    通常的xml,html类文件,可以按256k分配基本的缓存区,256k算不上一块内存,对于xml类应该足够了
    你可以计算一下,假如同时有100个线程,也就25M的需求而已
    如果256k不够,可以考虑制定512k的标准,如果超标,只能特事特办,另想办法:)
      

  9.   


    #define BLEN (4*1024)
    typedef struct _TmpBuf
    {
    BYTE pBuf[BLEN];
    _TmpBuf* next;
    }TBuf;
      

  10.   

    建议1:直接用标准c的内存分配alloc realloc : 每次收下来的累计长度即将达到当前已经分配的内存的时候,就realloc一个更大的内存,数据自动处理。建议2:自己动手实现这个链表式的buff,链表的每个node都new一个小的buff,node同时记录下来该本node的buff内保存的内容长度,和累积长度,当所有数据都下载完成以后,根据累积长度分配一个新的内存块,遍历一次链表,将数据合并。最后清除链表和相关的内存。
      

  11.   

    http不一定在头部明确指出数据的长度,比如chunk,或连接断开才结束。因此不能预先分配合适大小的内存。