用Wininet实现异步下载的问题(100分)

  • 主题发起人 主题发起人 fishding
  • 开始时间 开始时间
F

fishding

Unregistered / Unconfirmed
GUEST, unregistred user!
我原来采用的是同步方式,代码如下。现在要改成异步方式下载,需要修改哪些参数,或者修改哪些函数?
  如果能提供相关编程资料也行。请大家帮忙了!


//打开Internet句柄,初始化下载环境
...
try
DoOnStatusText('正在连接网络...');
//1.建立会话
FhSession:= InternetOpen('http-get-demo', INTERNET_OPEN_TYPE_PROXY,
PChar(PROXY), nil, 0); //同步方式
if FhSession = nil then
DoOnStatusText('建立会话失败!');
//2.建立连接
FhConnect:= InternetConnect(FhSession, PChar(FHostName), INTERNET_DEFAULT_HTTP_PORT,
nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
if FhConnect = nil then
DoOnStatusText('建立连接失败!');
//3.初始化下载请求
FhRequest:= HttpOpenRequest(FhConnect, 'GET', PChar(FDownPath), 'HTTP/1.1',
nil, @FAcceptTypes, INTERNET_FLAG_RELOAD, 0);
if FhRequest = nil then
DoOnStatusText('初始化下载请求失败!');
//4.发送下载请求
if HttpSendRequest(FhRequest, nil, 0, nil, 0) then
DoOnStatusText('网络连接成功!');
FConnected:=true;
except
DoOnStatusText('网络连接失败!');
end;
...
 
异步一般是用WSAOVERLAPPED、WSAGetOverlappedResult,找找函数说明把
 
不解,我只知道InternetOpen函数的最后一个参数改成INTERNET_FLAG_ASYNC,其他
的怎么改呢?每次HttpSendRequest都返回false,什么原因?
请大家指点!
 
HttpSendRequest都返回false,什么原因,这就是异步模型啊
函数一般都是立刻返回,你要用一些等待函数看你这个REQUEST的
结果,
 
具体一点。
 
我对WINSOCK比较熟,Wininet就是封装了那些函数而已,原理差不多的,
 
具体的如果用WINSOCK函数我可能就熟悉的多,很多资料上上没有wininet的函数资料啊
 
后退
顶部