能否实现FTP多线程上传?(100分)

  • 主题发起人 主题发起人 jmyzk
  • 开始时间 开始时间
J

jmyzk

Unregistered / Unconfirmed
GUEST, unregistred user!
能否FTP用FTP协议实现多线程上传?
 
刚才我看了idftp的demo.不是使用多线程。没有测试过是否可以,感觉应该可以。
还在看源代码。
 
to:zywcd
如果能帮到我,我把分全给你。1000分!
 
你是什么样的应用?很多文件同时上传?
ftp服务器是你自己写的?
 
网上的资料。你可以参考。
下面是一个简单的例子,我只做了一个线程,如果要更多的线程,在窗体上添加IdThreadComponent并将OnRun关联到IdThreadComponent1Run即可。
对于在OnRun中的语句,我中是简单的写一下,请根据你的实际要求改……
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdFTP,
IdBaseComponent, IdThreadComponent;

type
TForm1 = class(TForm)
IdThreadComponent1: TIdThreadComponent;
procedure IdThreadComponent1Run(Sender: TIdCustomThreadComponent);
private
public
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IdThreadComponent1Run(Sender: TIdCustomThreadComponent);
var
f: TIdFTP;
begin
f := TIdFTP.Create(Self);
try
f.Username := 'anonymous';
f.Password := 'cyd@dl99.net';
f.Host := '192.168.0.1';
f.Port := 21;
while not (Sender.Stopped or Sender.Terminated) do
try
f.Connect;
Sleep(10000);
f.Quit;
except
end;
finally
f.Free;
end;
end;

end.
 
如果服务器端有你写的程序,呵呵,多线程上传用indy小菜。
 
准备自己写FTP服务端和专用的客户端!客户端提供给我们自己的客户使用。
为什么要用多线程续点上传的功能?因为客户要传送的文件比较多,而且非常大,一般1、2百兆,有时侯达1G以上!
 
而且我是希望用多线程传输同一文件。如果每条线程对应不同的文件,这个我也会!
 
明白,你使用必须把文件分开传输。
反正客户端和服务端都是你自己写,给出一个笨办法如何?
你在客户端把文件分解。服务端接收。最多加上idudpserver进行信息交换。等所有文件传输完成后,服务端对文件进行合并。反正你使用多线程传输文件已经完成,加上文件分解和合并的功能就好。
 
原理上是可以的,我也正在尝试。

IDFtp里把很多东西都写死了,我试着改了它的上传子函数,增加几个参数如上传文件的指针范围,目标文件的指针范围等,初步已通过。

最近生病了,还未完成最后实验。
 
to:WickedladII
希望早点康复,完成实验!
to:zywcd
我也想过你的方法,不过我不用INDY,用ICS这套控件
 
建议用Indy, 应该会更专业更细致一些。
 
多人接受答案了。
 
后退
顶部