Hallo,
ich habe ein kleines Problem mit meinem
TCP Server.
Ich starte den Server und die Gegenstelle verbindet sich und sendet zum Beispiel ein Heartbeat Telegram. Das empfange ich auch.
Leider kommen die Telegramme manchmal so schnell, das anscheinend 2 im Buffer sind und ich beide in einem String darstelle statt getrennt in 2.
Ein zweites Problem ist, das er die Steuerzeichen z.B. ETX nicht korrekt darstellt.
Wer könnte mir da mal helfen?
Hier der Code:
Delphi-Quellcode:
procedure TMain_Frm.rdt_serverExecute(AContext: TIdContext);
var
LLine :
String;
b : Byte;
i : integer;
TBuffer: TiDBytes;
begin
if rdt_server.active
then begin
try
AContext.Connection.IOHandler.ReadBytes(TBuffer, -1, False);
i := AContext.Connection.IOHandler.RecvBufferSize;
LLine := IdGlobal.BytesToString(TBuffer, 0, i,
nil);
mbo_rdt_rec.Lines.Add(LLine);
pnl_rdt_last_record.Caption := LLine;
except
on E:
Exception do
lbo_rdt_server_status.Items.Add(PChar(E.ToString));
end;
end;
end;
//----------------------------------------------------------------------
Ich hab mal einen screenshot von der Anwendung mit hochgeladen.