D
dfw001
Unregistered / Unconfirmed
GUEST, unregistred user!
TCommBlock = record //定义数据传输格式
Command:char; //命令格式,a表示msg是传过来的文件
// b表示msg是传过来的聊天文本
Name:string[10]; //接收人姓名
Msg:array[0..1024] of char; //传送的内容
end;
//分块发送
CommBlock.Command :='a';
CommBlock.Name:='user01';
while 已发送的长度<文件总长度 do
begin
FillChar(CommBlock.Msg ,1025,0);
if 文件总长度-已发送的长度>1025 then
每次发送的长度:=1025
else
每次发送的长度:=文件总长度-已发送的长度;
stream1.Position :=Sendsize;
stream1.Read(CommBlock.msg,每次发送的长度);
//开始传送文件
form1.IdTCPClient1.Socket.Send(CommBlock,sizeof(CommBlock));
inc(已发送的长度,每次发送的长度);
end;
//分块接受
if CommBlock.command='a' then //开始传送文件
begin
i:=sizeof(CommBlock.Msg ); //每次接受的长度
stream1.Write(CommBlock.msg,i);//写文件
i_count:=i_count+i; //累计接受的长度
if i_count>=总长度 then
begin
Freeandnil(Stream1);
Messagebox(handle,'文件发送完毕!','提示息',mb_ok+mb_iconinformation);
end;
end
end;
高手指点一下。如何提高速度! dfw001@tom.com
Command:char; //命令格式,a表示msg是传过来的文件
// b表示msg是传过来的聊天文本
Name:string[10]; //接收人姓名
Msg:array[0..1024] of char; //传送的内容
end;
//分块发送
CommBlock.Command :='a';
CommBlock.Name:='user01';
while 已发送的长度<文件总长度 do
begin
FillChar(CommBlock.Msg ,1025,0);
if 文件总长度-已发送的长度>1025 then
每次发送的长度:=1025
else
每次发送的长度:=文件总长度-已发送的长度;
stream1.Position :=Sendsize;
stream1.Read(CommBlock.msg,每次发送的长度);
//开始传送文件
form1.IdTCPClient1.Socket.Send(CommBlock,sizeof(CommBlock));
inc(已发送的长度,每次发送的长度);
end;
//分块接受
if CommBlock.command='a' then //开始传送文件
begin
i:=sizeof(CommBlock.Msg ); //每次接受的长度
stream1.Write(CommBlock.msg,i);//写文件
i_count:=i_count+i; //累计接受的长度
if i_count>=总长度 then
begin
Freeandnil(Stream1);
Messagebox(handle,'文件发送完毕!','提示息',mb_ok+mb_iconinformation);
end;
end
end;
高手指点一下。如何提高速度! dfw001@tom.com