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:)