Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Indy 10 asyncrone ServerInfo an Clients?

  Alt 27. Okt 2012, 02:29
Normalerweise sollte das so laufen:
Server sendet an Client eine Message.
Im Client wird ein Event ausgelöst. (WinSock kann hier eine WM_SOCKET Message in die Message Queue legen)
In der Klasse TClientSocket aus der Unit ScktComp.pas gibt es dazu das Event OnRead.
http://docwiki.embarcadero.com/Libra...mSocket.OnRead

Der Client liest die bisher angekommenen Daten aus dem Socket und hängt sie an einen Puffer an.
Dann wird untersucht, ob der Puffer eine vollständige Message enthält (erkennbar am abschliesenden Return-Zeichen).
Jede vollständige Message wird aus dem Puffer ausgeschnitten und ausgewertet/bearbeitet.
Die Bearbeitung kann im Hautpthread (da das Event als Windows-Message erzeugt wurde, befinden wir uns im Kontext des Hauptthreads) durchgeführt werden oder einen anderen Thread übergeben werden.

Ich würde Indy nur dann verwenden, wenn gleichzeitig auch ein Protokoll wie z.B. POP3, SMTP, FTP, ... eingesetzt werden muss.
Wenn man sein eigenes Protokoll benützt und im Prinzip nur TCP/IP braucht, dann hat man mit Indy eine riesige Bibliothek aus der man nur 2% des Codes braucht.
Leider gibt es in Indy auch keine Trennung zwischen Datentransport (also TCP/IP oder UDP/IP) und dem eigentlichen Protokoll.
  Mit Zitat antworten Zitat