AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy TCP Client empfangen mit Prefix / Suffix
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCP Client empfangen mit Prefix / Suffix

Ein Thema von OlliWW · begonnen am 9. Aug 2021 · letzter Beitrag vom 12. Aug 2021
Antwort Antwort
OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#1

Indy TCP Client empfangen mit Prefix / Suffix

  Alt 9. Aug 2021, 15:51
Hallo,

Ich implementiere gerade eine TCP Kommunikation mit bestimmten Netzwerkgeräten.

Zu den Geräten schicke ich ein Kommando und empfange eine Antwort.

Ein Kommando besteht aus:
STX (Steuerzeichen) + Kommando + ETX

Die Antwort besteht aus:
STX + Antwort + ETX

Bisher habe ich bei serieller Kommunikation bei der COM Port Komponente ein einfaches "OnReceive" Event gehabt. Vorher ist es möglich ein Datensatz-ENDE Zeichen zu deklarieren (in dem Fall ETX). Jedes Mal wenn die serielle Schnittstelle einen Datensatz + ETX sendet, wird das Event getriggert und ich kann darauf reagieren.

Gibt es in der Indy Sammlung etwas ähnliches?

Den einzigen Weg den ich bisher gefunden habe ist, einen Thread zu schreiben, der einen IdTCPClient nutzt und der dauerhaft ein IOHandler.ReadLn(#$3) ausführt und entsprechend per Synchronize die empfangenen Daten zurück gibt. Hier greife ich mit Threadding etc. schon ziemlich tief ins System ein und da ich eine sehr stabile Lösung brauche, habe ich mich gefragt, ob es nicht schon etwas vorgefertigtes in diese Richtung gibt.

Ich habe mit den IdTCPCmdClient angesehen, dieser macht aber statisch ein ReadLn mit einem LF - was mir leider nicht hilft.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#2

AW: Indy TCP Client empfangen mit Prefix / Suffix

  Alt 9. Aug 2021, 20:44
Kenne mich mit Indy nicht so aus, aber das als OpenSource erhältliche ICS http://overbyte.eu
kann das auf alle Fälle. Deren TWSocket Komponente arbeitwet asynchron, braucht also keinen Thread und hat einen LineMode,
der genau das ist, was du suchst.

Beispielprogramme werden da auch mitgeliefert.

ICS kann auch über GetIt installiert werden.

Grüße

TurboMagic
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Indy TCP Client empfangen mit Prefix / Suffix

  Alt 11. Aug 2021, 15:09
Ich nutze auch ICS.

Aber mit Indy sollte sowas auch gehen - auch ohne zusätzlichen Thread.

Hast du dir das Beispielprogramm, welches in #7 von https://www.delphipraxis.net/208112-tcpclient-read.html verlinkt wird mal runtergeladen?

Ich glaube, das könnte helfen.
Michael Gasser
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Indy TCP Client empfangen mit Prefix / Suffix

  Alt 11. Aug 2021, 16:22
Wenn die Kommunikation immer aus Request/Response Paaren besteht, ist kein Thread notwendig. Nur wenn die Gegenseite zu beliebigen Zeitpunkten senden kann, auch wenn sie vorher keinen Request erhielt, muss Indy in einem Lese-Thread auf die Nachrichten warten. Ein eventuell bekanntes Protokoll das in Indy mit einem Thread implementiert ist, ist Telnet (Klasse TIdTelnet, siehe https://github.com/IndySockets/Indy/...s/IdTelnet.pas). Senden kann man dann, unabhängig vom Lesen, immer aus dem Hauptthread.
Michael Justin
  Mit Zitat antworten Zitat
OlliWW

Registriert seit: 31. Aug 2011
159 Beiträge
 
#5

AW: Indy TCP Client empfangen mit Prefix / Suffix

  Alt 12. Aug 2021, 00:20
Hallo,

Vielen Dank für die Antworten. Nachdem ich mich jetzt jahrelang mit indy "rumgeschlagen" habe, habe ich aufgrund der Antworten hier die ICS Komponenten ausprobiert. WSocket von ICS tut genau das, was ich möchte. Ein Traum! Und gleichzeitig ärgerlich, dass ich immer mit Indy all die Jahre so viel "drum herum" programmiert habe.

WSocket, LineMode = True, LineEnd = ASCII Char...fertig.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz