INDY进行SOCKET文件传输的问题
我在用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;