wininet实现ftp客户端关于传输进度的分析[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 flyelf 的 blog

wininet提供了接口ftpgetfile实现从ftp服务器下载文件;提供了接口ftpputfile实现把文件上传到ftp服务器上。通过这两个接口,我们能够完成基本的ftp文件传输客户端功能。但是在传输的同时,我们希望知道当前大概传输了多少,传输完整个文件大概需要多长时间,当前进度是多少,大概还有多长时间才能传输完毕。

单纯依靠这两个接口,我们无法实现这个功能。仔细翻阅msdn,发现wininet还提供了这样一个接口:internetsetstatuscallback。该函数就是设置文件传输的回调函数,其原型如下:

internet_status_callback internetsetstatuscallback(
  hinternet hinternet,
  internet_status_callback lpfninternetcallback
);

该接口为internet会话设置一个状态回调函数:lpfninternetcallback,该回调函数的原型声明如下:

void callback internetstatuscallback(
  hinternet hinternet,
  dword_ptr dwcontext,
  dword dwinternetstatus,
  lpvoid lpvstatusinformation,
  dword dwstatusinformationlength
);

通过这个回调函数,我们可以实现对当前传输进度的控制:可以统计出到目前已经传输了多少字节,并且计算出传输速率,从而可以得知大概还剩下多少时间。

本文关键:wininet实现ftp客户端关于传输进度的分析
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top