INDY进行SOCKET文件传输的问题

liruiecho 2007-11-26 08:13:25
我在用INDY分包进行大文件传输时,碰到这样的问题:Server端传文件给Client端比较容易地实现了,但现在需要从Client分包传文件给Server端总是有问题。我的代码:
SERVER端(每个包的大小定义为1K):
procedure TForm_server.IdTCPServer2Execute(AThread: TIdPeerThread);
begin
j:=0;
AThread.Connection.OpenWriteBuffer;
with AThread.Connection do //已经连接上的一个进程
begin
ReadStream(RFileStream, 1024);//RFileStream已经建立
RFileStream.Seek(1024,0);
end;
end;

Cliend端:
procedure TForm_client.Button10Click(Sender: TObject);
begin
AFileStream := TFileStream.Create('E:\event.bin', fmOpenRead);
ASize:=AFileStream.Size;
totalsize:=1582;
if (ASize mod 1024)=0 then
sendcount:=ASize div 1024
else
sendcount:=totalsize div 1024 +1 ;
for j :=1 to sendcount-1 do//判断每次传1K的次数
begin
idtcpclient.WriteStream(AFileStream, false, TRUE, 1024);
AFileStream.Seek(1024*j, soFromBeginning);
end;
idtcpclient.WriteStream(AFileStream, false, true, ASize mod 1024);//传剩余的数据
end;
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljq900 2007-12-12
  • 打赏
  • 举报
回复
看看indyftp的实现
应该是很好的例子
Bear_hx 2007-11-27
  • 打赏
  • 举报
回复
楼主你可以看看盒子上的传文件例子,哪个可以完全实现功能,好久没做过这种了,具体细节也不好说,只能告诉你盒子上有一个,你去看看。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧