200分求多线程传送文件源码,tcp,udp均可。(200分)

  • 主题发起人 主题发起人 zyl2000
  • 开始时间 开始时间
Z

zyl2000

Unregistered / Unconfirmed
GUEST, unregistred user!
200分求多线程传送文件源码,tcp,udp均可。
 
大家来帮帮忙吧!
这个问题不是那么难吧?
 
别吵吵了,没人会帮你的,DFW里的牛人根本就没写过:(
自己找一个改一改吧!
 
给你个例子吧:
unit copythread;
interface
uses
Classes, SysUtils;
Const
KB1 = 1024;
MB1 = 1024*KB1;
GB1 = 1024*MB1;
type
TCopyFile = class(TThread)
public
Percent : Integer;
do
ne,ToDo : Integer;
Start : TDateTime;
constructor Create(Src, Dest: String);
private
{ Private declarations }
IName,OName : String;
protected
procedure Execute;
override;
end;

implementation
{ TCopyFile }
constructor TCopyFile.Create(Src, Dest : String);
begin
IName := Src;
OName := Dest;
Percent := 0;
Start := Now;
FreeOnTerminate := True;
inherited Create(True);
end;

procedure TCopyFile.Execute;
var
fi,fo : TFileStream;
do
d,did : Integer;
cnt,max : Integer;
begin

Start := Now;
try
{ Open existing destination }
fo := TFileStream.Create(OName, fmOpenReadWrite);
fo.Position:=fo.size;
except
{ otherwise Create destination }
fo := TFileStream.Create(OName, fmCreate);
end;
try
{ open source }
fi := TFileStream.Create(IName, fmOpenRead);
try
{ synchronise dest en src }
cnt:= fo.Position;
fi.Position := cnt;
max := fi.Size;
ToDo := Max-cnt;
do
ne := 0;
{ start copying }
Repeat
do
d := MB1;
// Block size
if cnt+dod>max then
do
d := max-cnt;
ifdo
d>0 then
did := fo.CopyFrom(fi,do
d);
cnt:=cnt+did;
Percent := Round(Cnt/Max*100);
do
ne :=do
ne+did;
ToDo := Max;
until (dod=0) or (Terminated);
finally
fi.free;
end;
finally
fo.free;
end;
end;
 
看来是没有人能帮忙了,没办法,散分了。
三天之内,见者有分!
 
说不定找找vc的论坛会有的,改过来就是了
 
连问题也没有说清楚. 你是要用什么方式传文件? 是像flashget那样的吗?
你要看如下的技术资料:
1. 多线程编程
2. http协议.
3. ftp 协议.
4. CreateFile的共享方式.
另: 不要老想要源码, 天上会掉大饼吗?
闪电会同时击中两次吗?
 
在Delphi6/7中利用UDP协议传送文件的例子
http://www.aidelphi.com/6to23/docu/MyUDP(Delphi6_7).rar
传送就有,多线程就没有,还要自己发挥的
 
多人接受答案了。
 
后退
顶部