Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Indy: Verbindungen eine ID zuweisen

  Alt 5. Nov 2013, 07:51

Client1 kann Daten an Client2 senden, indem beim Server die eigehenden Daten von Client1 an die zweite Verbindung vom Server gesendet werden. Loggt jetzt jedoch Client2 plötzlich aus oder die Verbindung von Client2 zum Server bricht unvorhergesehen ab, dann sendet Client1 die Daten an den Client3, was ich auf keinen Fall möchte.

...


Frage: Wie kann ich dieses Problem lösen? Ich möchte die Daten genau EINER bestimmten Verbindung zuordnen. Die Verbindung 2 vom IndyServer ist ja der 2. verbundene Client, bzw der dritte, wenn der zweite sich ausloggt.
Die Kernfrage ist doch: wie kann Client1 Client 2 identifizieren? Um eine Nachricht Client1->Client2 zu erlauben, braucht der Server die Information von Client1, dass er an "Client2" senden will.

Eine ID läßt sich einem Indy Context (einer Verbindung) zuweisen, indem man eine Unterklasse von TIdServerContext definiert, in der man dann seine eigenen Properties wie ID, Nickname, Status (z.B. 'momentan nicht am Platz') etc. unterbringt. Diese Klasse weist man dann dem Server als ContextClass zu. Beim Connect / Login kann man sie dann füllen. Wenn man dann eine Liste aller Kontexte durchlaufen und eine bestimmte ID finden will, castet man die TIdContext Objekte in den eigenen Typ und kann dann auf ID, Nickname etc. zugreifen.
Michael Justin
  Mit Zitat antworten Zitat