求下载程序的源代码。(100分)

W

Writer

Unregistered / Unconfirmed
GUEST, unregistred user!
只要能下载就可以,不用多线程等。
 
试试!
proceduredo
wnloadFile(strHost, strRemoteFileName, strLocalFileName: string;
ClientSocket: TClientSocket);
var
intReturnCode: Integer;
s: string;
szBuffer: array[0..128] of Char;
FileOut: TFileStream;
begin
if strRemoteFileName[1] <> '/' then
strRemoteFileName := '/' + strRemoteFileName;
FileOut := TFileStream.Create(strLocalFileName, fmCreate);
try
with ClientSocketdo
begin
Host := strHost;
ClientType := ctBlocking;
Port := 80;
try
Open;
s := 'GET ' + strRemoteFileName + ' HTTP/1.0'#13#10 +
'Host: ' + strHost + #13#10#13#10;
intReturnCode := Socket.SendBuf(Pointer(s)^, Length(s));
if intReturnCode > 0 then
begin
while (intReturnCode > 0)do
begin
FillChar(szBuffer, SizeOf(szBuffer), 0);
intReturnCode := Socket.ReceiveBuf(szBuffer, SizeOf(szBuffer));
if intReturnCode > 0 then
FileOut.Write(szBuffer, intReturnCode);
end
end
else
MessageDlg('No answer from server', mtError, [mbOk], 0);
Close;
except
MessageDlg('No connection', mtError, [mbOk], 0);
end;
end;
finally
FileOut.Free
end;
end;

调用例子:
procedure TForm1.Button1Click(Sender: TObject);
begin
do
wnloadFile('www.scalabium.com', '/forums.htm', 'd:/forums.htm', ClientSocket1);
end;
 
听说ICS控件可以支持多线程下载,不知道是不是真的。
 
TO xdzhan :
没错!ICS支持断点继传。
如:HttpCli.ContentRangebegin
:= '1000' 表示从1000字节处开始
HttpCli.ContentRangeEnd :='2000' 表示到2000字节处结束
若为HttpCli.ContentRangeEnd :='' 则表示一直到结束
 
其实Delphi里面的几个Http的控件就可以了。。[:)]
 
那里有ICS的帮助文件档,有的立即给分。
 
有没有它的相关帮助文件?????
 
to writer
这是ICS的官方网站,你可以去看一下有没有帮助文件,
http://overbyte.alexid.fr/frame_index.html
别忘了分点分给我呀[:)]
 
ICS2000 挺好的 能完成大量SOCKET开发 我们一直都用她!~~
 
多人接受答案了。
 
顶部