Code:
type
TForm1 = class(TForm)
private
LaengeNaechsteNutzdaten: Integer;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Info: TInfo;
begin
// Gibt es genug, um die Länge auszulesen?
if (LaengeNaechsteNutzdaten = 0) and (Socket.ReceiveLength >= SizeOf(LaengeNaechsteNutzdaten)) then
// Dann auslesen
Socket.ReceiveBuf(LaengeNaechsteNutzdaten, SizeOf(LaengeNaechsteNutzdaten));
if (LaengeNaechsteNutzdaten > 0) and (Socket.ReceiveLength >= LaengeNaechsteNutzdaten) then
begin
// Wenn der Puffer die Länge der Nutzdaten erreicht hat, auslesen
Socket.ReceiveBuf(Info, LaengeNaechsteNutzdaten);
// Daten verarbeiten...
MachWasMitDaten(Info);
LaengeNaechsteNutzdaten:= 0;
end;
end;
Weil das TInfo ja immer gleich groß ist, kann man sich den Integer theoretisch auch sparen, aber so müsste es aussehen denke ich...