AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy TCP: Was ist der IOHandler?
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCP: Was ist der IOHandler?

Ein Thema von Stefan Hueg · begonnen am 26. Nov 2006 · letzter Beitrag vom 26. Nov 2006
Antwort Antwort
Benutzerbild von Stefan Hueg
Stefan Hueg

Registriert seit: 13. Jun 2004
Ort: Gießen
187 Beiträge
 
Delphi 2006 Professional
 
#1

Indy TCP: Was ist der IOHandler?

  Alt 26. Nov 2006, 00:48
Bei der Indy TCP Server Komponente gibt es ja eine Property namens IOHandler. Was ist das genau? In der Hilfe wurde ich nicht so recht fündig bzw. es war für mich verwirrend. wenn ich das IOHandler Objekt auf eine Form lege, kann ich der Property ja den Namen zuweisen. Laut Name müsste es sich um einen Input/Output Handler handeln.

Aber was bringt mir die Eigenschaft? Denn Methoden des Objektes konnte ich nicht finden, sie hat nur ein OnStatus Ereignis.

Viele Grüße,

Stefan
Stefan Hueg
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Indy TCP: Was ist der IOHandler?

  Alt 26. Nov 2006, 11:00
Zitat von Stefan Hueg:
Bei der Indy TCP Server Komponente gibt es ja eine Property namens IOHandler. Was ist das genau? In der Hilfe wurde ich nicht so recht fündig bzw. es war für mich verwirrend.
Hi nochmal,
ja, an dieser Stelle möchte ich dann doch darauf hinweisen, wenn etwas verwirrend für dich ist, dann wäre es doch nett wenn du genauer sagst was. Was hast du denn der Hilfe schon entnommen, was nicht verstanden?
Dass du direkt ein IOHandler Objekt auf die Form legen kannst finde ich jetzt verwirrend, nebst dass das Ding TIdIoHanlder heißen würde (was ja soweit kein Problem ist) handelt es sich dabei um die abstrakte Basis. Du kannst nur Nachfahren dieser Klasse auf die Form legen!

Was du dann im Objektinspektor findest sind keineswegs alle Methoden und Eigenschaften des Objekts, nur die die veröffentlicht wurden. Du kannst aus dem Editor heraus auch auf alles was öffentlich ist zugreifen, wenn du eine Klasse von TIdIoHandler ableitest auch auf die Dinge die protected sind. In der Hilfe findest du aber natürlich alle Informationen.

An sich handelt es sich beim IO-Handler von Indy um ein Framework. Du hast hier eine abstrakte Basis um IO über zwei Indy Komponenten zu realisieren. IO steht dabei natürlich für Input/Output, dass hast du schon richtig gesagt. Du kannst also Daten irgendwie zwischen zwei Indy Komponenten übertragen.
Möchtest du dies tun, besteht der Vorgang ja in der Regel aus einer einfachen Abfolge von Dingen:
  • Erzeugen von Sender und Empfänger
  • Lesen des Datums, dass verschickt werden soll
  • Warten bis Sender bereit
  • Prüfen ob Empfänger bereit ggf. auf diesen Warten
  • Senden des Datums
  • Lesen des Datums durch den Empfänger
  • ggf. Empfang bestätigen

Das ist noch stark vereinfacht. Einen großen Teil nehmen dir die Indy-Komponenten ohnehin schon ab, so ist das Protokoll ja durch die Komponenten gekapselt. Das Hauptproblem ist, dass du wissen musst wann Sender und Empfänger zum Übertragen bereit sind. Möchtest du eine große Datei übertragen, während der Empfänger diese aber gerade nicht entgegen nehmen möchte, so könnten die Daten einfach verworfen werden und du kannst wieder und wieder und wieder Senden, bis du zufällig mal Glück hast. Das würde allerdings unnötig viel Verkehr erzeugen, was selten erwünscht ist. Besser ist es erst zu senden, wenn der Empfänger auch bereit ist.
Das Framework nimmt dir hauptsächlich diese Arbeit ab. Es ist aber nur eine abstrakte Basis, die du leicht an deine Bedürfnisse anpassen kannst. Dazu musst du nur die virtuellen Methoden mit eigener Logik überschreiben. Sendest du ein Datum, so werden diese virtuellen Methoden verwendet. In der OOP steckt dahinter eine Indirektion (nachschauen in einer Tabelle, welche Methode hier wirklich verwendet wird) und es würde deine Logik aufgerufen werden, ohne dass die restliche Logik verloren geht (warten bis bereit, verwenden des Puffers, ...).

Hoffe auch ier ist grob klar wo der Sinn liegt. Es ist aber ganz klar nur ein Framework, also etwas sehr Flexibles, dass dir eine Basis schafft auf der du spezielle Implementierungen aufbauen kannst.

Gruß Der Unwissende
  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 02:11 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