Write/ReadStream w idtcp

0

WItam mam dosc dziwny problem chce przeslac wieksz pliki np 700 mb przy pomocy idtcpserver i idtcpclient z pakietu indy 9 ale program zaczyna wariowac przy wiekszych plikach. tak oto przesylam :

w idtcpclient:

....
          try
            if ReadLn = 'ok' then
            begin
              TcpFileStream := TFileStream.Create(FilePath, fmCreate);
              try
                ReadStream(TcpFileStream, ReadInteger);
              finally
                WriteLn('end');
                TcpFileStream.Free;
              end;
            end;
          finally
            Disconnect;
            Free;
          end;
....

w execute idtcpserver

...
        try
          AThread.Connection.WriteLn('ok');
          TcpFileStream := TFileStream.Create('test.avi', fmOpenRead or fmShareDenyWrite);
          AThread.Connection.OpenWriteBuffer;
          try
            AThread.Connection.WriteStream(TcpFileStream, true, true);
            AThread.Connection.CloseWriteBuffer;
          except
            AThread.Connection.CancelWriteBuffer;
            raise;
          end;
        finally
          if AThread.Connection.ReadLn = 'end' then
          begin
            AThread.Connection.Disconnect;
          end;
        end;
.....

Przy malych plikach działa(kolo 2mb), przy wiekszych program zajmuje full procesora (nawet do 90%) i sporo ramu(do 40 mb). Mogłby mi ktos powiedziec co robie żle? Dodam ,iż idtcpclient jest tworzony dynamicznie TcpClient :=TIdTcpClient.Create(NIL), idtcpserver jest na scenie.

Pozdrawiam:)

0

zmien komponent na IdFTP

0

za takie porady to ja serdecznie dziekuje...

1 użytkowników online, w tym zalogowanych: 0, gości: 1