moin moin!
mein kleines serverprogramm kann mit dieser procedure binärdaten empfangen:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
SizeOfPacket: Integer;
pBuffer: Pointer;
begin
SizeOfPacket := Socket.ReceiveLength;
GetMem(pBuffer, SizeOfPacket);
Socket.ReceiveBuf(pBuffer^, SizeOfPacket);
MUpdateStream.Write(pBuffer^, SizeOfPacket);
FreeMem(pBuffer);
if () then
begin
MUpdateStream.SaveToFile('update2.exe');
Log.Lines.Add('('+TimeToStr(Now)+') System: Ein Server-Update wurde erfolgreich empfangen und wird nun installiert.');
MUpdateStream.Free;
MUpdateStream := TMemoryStream.Create;
end;
end;
allerdings hab ich damit ein kleines problemchen. die ClientRead procedure wird ja quasi wie eine schleife immer wieder so lange aufgerufen, bis keine daten mehr empfangen werden. die empfangenen daten werden dann immer an meim MUpdateStream angehängt. am ende möchte ich dann aus dem stream eine datei erstellen.
Nur ich weiss leider nicht, wie ich meine bedingung formulieren muss, dass dieser teil quasi nur nach dem letzten empfangenen paket aufgerufen wird. man könnte von seiten des clients vorher die dateigröße übermitteln, nur dafür müsste ich insgesamt mein programm zu sehr umbauen. hat jemand noch eine andere idee ?
danke!
yildi