Ich verwende jetzt blocking Sockets und es funkt. soweit auch alles, keine Memory Leak
Aber eine andere Sache ist mir jetzt auf gefallen seit ich blocking Sockets verwende habe ich probleme dateien zu übertragen :
Empfang:
Delphi-Quellcode:
procedure TClient.DateiDownload(Socket: TCustomWinSocket);
var zielDatei: TFileStream;
nSocketStream : TWinSocketStream;
nReceived: Integer;
Buffer: array [0..9999] of Char;
begin
zielDatei := TFileStream.Create('neu.txt', fmCreate);
try
bDateiEmpfang := True;
nSocketStream := TWinSocketStream.Create(Socket,5000);
try
while bDateiEmpfang do
begin
nReceived := nSocketStream.Read(Buffer, sizeof(Buffer));
if nReceived <= 0
then Break
else
zielDatei.WriteBuffer(Buffer, nReceived);
Sleep(1);
end;
finally
nSocketStream.Free;
end;
zielDatei.Position := 0;
bDateiEmpfang := false;
finally
zielDatei.Free;
end;
end;
Es scheint nicht alle daten zu übertragen.....
Senden:
Socket.SendStream(TFileStream.Create('neu.txt', fmOpenRead or fmShareDenyWrite))