Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML mit ClientSocket empfangen und auswerten (https://www.delphipraxis.net/60007-xml-mit-clientsocket-empfangen-und-auswerten.html)

mruecker 1. Jan 2006 17:09


XML mit ClientSocket empfangen und auswerten
 
Hallo zusammen,

ich stehe derzeit ziemlich auf dem Schlauch und benötige einen kleinen Denkanstoß.

Folgendes Szenario:

Ich empfange mit Hilfe von TClientSocket Daten von einem Server mit dem folgenden Aufbau:

XML-Code:

<ManagerOutput>
 <Event Value="..."/>
 <Privilege Value="..."/>
 <Server Value="localhost"/>
</ManagerOutput>
Ich muss nun die Daten auslesen und entsprechend dem Value-eintrag des Event-Tags verschiedene Aktionen starten.
Jede Aktion auf dem Server löst ein solches Datenpaket aus. Was allerdings vorkommen kann, ist, dass nicht immer der komplette Block in einem Pufferpaket ankommt.
Ich brauche also eine Lösung, die wie folgt aussieht:
Lese den Socket vom Starttag anfangend bis zum Endtag.
Schreibe die Tag-Namen und die Value-Werte in Variablen und
lösche den Puffer für den Empfang weiterer Pakete.

Nun meine Frage (wir benutzen Dephi 7 Pro):
1.) Benötige ich für diese Aufgabe unbedingt eine XML Komponente, und wenn ja, welche könnt ihr hierfür empfehlen?
2.) Wie kann ich das Pufferproblem am besten lösen?

Für entsprechende Denkankstöße wäre ich sehr dankbar...

Danke und ein erfolgreiches neues Jahr,
Markus...

Muetze1 1. Jan 2006 17:42

Re: XML mit ClientSocket empfangen und auswerten
 
Moin!

1. Wieso nutzt du nicht einen TMemoryStream und schreibst alles empfangene dort hinein. Danach kannst du sofort schauen, ob die XML Daten komplett empfangen wurden und entsprechend verarbeiten.

2. Du musst nicht eine XML Komponente dafür nutzen, aber es kann doch auch leicht eine umfangreichere Datenstruktur von dem Server (abhängig von dem Event) zurück kommen und da wird es dann ein wenig schwieriger mit dem "per Hand" durcharbeiten. Auch ist die Frage, ob der Server nicht vllt. auch mal andere Zeichensätze wie z.B. UTF-8 mit BOM benutzt, dann hast du höchstwahscheinlich auch wiederrum ein Problem.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz