Einzelnen Beitrag anzeigen

Grizu

Registriert seit: 22. Aug 2016
20 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Indy TCP Server mehrfache Strings im Buffer

  Alt 22. Aug 2016, 16:00
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.
Miniaturansicht angehängter Grafiken
record.png  
  Mit Zitat antworten Zitat