main.cpp
上传用户:pmma55
上传日期:2020-12-28
资源大小:17k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include "M5HttpDown.h"
  3. #define TARGET_URI  "http://www.5mbox.com/bbs/test1.mp3"
  4. #define LOCAL_FNAME "test.mp3"
  5. CM5HttpDown * g_http_down ; 
  6. void recv_func(char * recv_buf, int recv_len, void * data) ; 
  7. bool check_exists(char * file_name) ; 
  8. int get_file_size(char * file_name) ; 
  9. bool check_exists(char * file_name) 
  10. {
  11.     FILE * fp = NULL ; 
  12.     if(!file_name) return false ; 
  13.     fp = fopen(file_name, "r") ;
  14.     if(fp == NULL) return false ; 
  15.     fclose(fp) ; 
  16.     return true ;  
  17. }
  18. int get_file_size(char * file_name) 
  19. {
  20.     FILE * fp = NULL ; 
  21.     int    file_size = 0 ; 
  22.     if(!file_name) return 0 ; 
  23.     fp = fopen(file_name, "rb") ; 
  24.     if(fp == NULL) return 0 ; 
  25.     fseek(fp, 0, SEEK_END) ;
  26.     file_size = (int)(ftell(fp)) ; 
  27.     fclose(fp) ; 
  28.     return file_size ; 
  29. }
  30. void recv_func(char * recv_buf, int recv_len, void * data) 
  31. {
  32.     FILE * fp = (FILE *)(data) ; 
  33.     double rate = 0.0f ; 
  34.     rate = (double)(g_http_down->http_recv_size())/(double)(g_http_down->http_total_size()) ; 
  35.     printf("rrecv : %d%%", (int)(rate * 100)) ;
  36.     fflush(stdout) ; 
  37.     fwrite(recv_buf, recv_len, 1, fp) ; 
  38.     fflush(fp) ; 
  39.     if(g_http_down->http_total_size() <= g_http_down->http_recv_size()) {
  40.         fclose(fp) ; 
  41.         g_http_down->http_stop() ; 
  42.     }
  43. }
  44. int main(int argc, char *argv[])
  45. {
  46.     
  47.     FILE * fp = NULL ; 
  48.     int    recv_bytes = 0 ; 
  49.     
  50.     // check file exist will perform resume down 
  51.     if(check_exists(LOCAL_FNAME)) {
  52.         recv_bytes = get_file_size(LOCAL_FNAME) ; 
  53.         fp = fopen(LOCAL_FNAME, "ab") ; 
  54.         fseek(fp, 0, SEEK_END) ;
  55.     } else {
  56.         fp = fopen(LOCAL_FNAME, "wb") ; 
  57.     }
  58.     
  59.     g_http_down = new CM5HttpDown() ; 
  60.     
  61.     if(!g_http_down->http_down(TARGET_URI, recv_func, (void *)(fp), recv_bytes)) {
  62.         // printf("connect failed !n") ; 
  63.     } else {
  64.         while(g_http_down->is_running()) {
  65.             Sleep(1000) ; 
  66.         }
  67.     }
  68.     g_http_down->http_stop() ; 
  69.     delete g_http_down  ; 
  70.     return EXIT_SUCCESS;
  71. }