var
ReceivingFile : Boolean;
Len : Integer;
FStream: TFileStream;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
iLen: Integer;
Bfr: Pointer;
Text : string;
begin
if not ReceivingFile then
begin
Text := Socket.ReceiveText;
if Copy(Text, 1, 5) = 'SIZE!' then
begin
Delete(Text, 1, 5);
Len := StrToInt(Text);
ProgressBar1.Max := StrToInt(Text);
FStream := TFileStream.Create('C:\ReceivedFile.exe', fmCreate or fmShareDenyWrite);
ReceivingFile := True;
end;
end
else
begin
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
try
Socket.ReceiveBuf(Bfr^, iLen);
FStream.Write(Bfr^, iLen);
Progressbar1.Position := ProgressBar1.Position + iLen;
finally
FreeMem(Bfr);
if Assigned(FStream) and (FStream.Size = Len) then
begin
FStream.Free;
FStream := nil;
ReceivingFile := False;
end;
end;
end;
end;