AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients
Thema durchsuchen
Ansicht
Themen-Optionen

indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

Ein Thema von Kostas · begonnen am 29. Sep 2012 · letzter Beitrag vom 1. Okt 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#11

AW: indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

  Alt 29. Sep 2012, 23:32
wenn man auf TCPServer und TCPClient aufbaut und gezwungen ist in GetThread ohnehin seinen eigene Clientthread zu implementieren, könnte man IMHO diesen um ein Messaging erweitern, in dem er dem Client bei Anforderung einfach weiter Daten schicken kann, beenden dann per spezieller Message. Der Client müsste dann nur entsprechend per WaitforData (Application.Prozessemassages) reagieren, gegf. sogar in einem eigenen Thread erzeugt/verwendet werden.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

  Alt 29. Sep 2012, 23:50
Hallo,

so wie ich das sehe, könne das die Indy Komponenten nicht.
Die Komponenten ICS von http://www.overbyte.be haben ein TWSocket
welcher ein Event OnDataAvailable hat. Dieser wird getriggert sobald Daten vom Server an den Client
eingetroffen sind.

Mich wundert das sehr das Indy hier einen anderen Weg geht.
Gruß Kostas
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

  Alt 1. Okt 2012, 00:01
Hallo,

ich habe jetzt einiges gelesen über Indy und ICS. Indy arbeitet nach dem blockierenden Ansatz.
und ICS mit dem nicht blockierenden, event gesteuerten Ansatz. Indy Arbeiter sozusagen Sequenziell
die Datenpakete ab und warten auf die nächste Aktion indem er den Thread in dem er läuft blockiert.
Die leseroutine muß also zwingend in einen eigenen Thread laufen welcher die Datenpakete abholt, und blockiert werden darf.
Hat einen gewissen Vorteil wenn das ausgehandelte Protokoll einen sequenziellen Ablauf zulässt.

Hiermit ist auch meine Vermutung dass der Client permanent Daten an den Server sendendet, höchstwahrscheinlich wiederlegt(Nicht getestet mit einem Port Sniffer).

Der Ansatz von ICS ist meines Erachtens deutlich besser. Da es Event gesteuert ist, kann die Kommunikation
ruhig auf dem Main Thread laufen. Was ich absolut Genital finde der WSocketServer verwaltet alle angemeldete
Client. Dabei wird eine Klasser erzeugt die mein Nutz-Objekt beschreibt und von TWSocketClient erbt.
Mein Nutz-Objekt aus sicht des Servers beinhaltet das WSocketClient Objekt auf dem entfernten Rechner.

Allerdings gibt es auch für Indy ausreichend Anwendungsfällen die eine
Serialisierung fordern. Vermutlich ist das Thema so komplex dass es nicht möglich ist beide Technologien
in einer Komponenten Suite zu packen.

Gruß Kostas

[Edit] //http://edn.embarcadero.com/article/20465 ist ein für jeden verständliches Beispiel für ICS.

Geändert von Kostas ( 1. Okt 2012 um 00:03 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#14

AW: indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

  Alt 1. Okt 2012, 06:52
Ich verwende Indy für Standardaufgaben, d.h. mal schnell ne TCP-Kommunikation nach dem Query-Response Prinzip aufbauen (Client sendet Anforderung, bekommt Antwort).

ICS ist -wie erwähnt- eventbasiert. Für eine Unterhaltung muss man aber eine State-Machine bauen, was an sich kein Problem ist, aber dem sequentiellen Gedanken widerspricht.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

  Alt 1. Okt 2012, 08:34
Hallo,

ich denke beide Technologien haben ihre Berechtigung. Für mein Projekt ist der Event getriebene
Ansatz besser. Um es nochmal zu betonen, Indy wird durch den blockierenden Thread nicht mehr traffic
verursachen. Es ist viel mehr eine Frage der Anforderung und der persönlichen Sympathie, für welche
Technologie man sich entscheidet. Beide Komponenten Suites sind stabil.

Gruß Kostas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:50 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