AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy: Verbindungen eine ID zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Indy: Verbindungen eine ID zuweisen

Ein Thema von eegoar · begonnen am 4. Nov 2013 · letzter Beitrag vom 6. Nov 2013
 
eegoar

Registriert seit: 7. Aug 2008
6 Beiträge
 
#1

Indy: Verbindungen eine ID zuweisen

  Alt 4. Nov 2013, 19:00
Guten Abend.

Für ein Chatprogramm (mit den Indy10 Komponenten) möchte ich Daten über einen Clienten an einen Server senden und dieser soll die Daten an den richtigen Zielclienten weitersenden.
Der Ablauf ist wie folgt:

Der Client fragt an, wie viele Clienten sich dem Server bereits angeschlossen haben (bzw. wie viele aktive Verbindungen der Server gerade hat).
Anschließend muss der Client ein Passwort senden, damit er in die Nutzerliste im Server hineinkommt und ihm eine ID zugeordnet wird (also der Client empfängt eine Nutzernummer).

Das Problem ist jetzt das folgende:
Client1 loggt sich zuerst ein und wird Verbindung 1 des Servers. Anschließend loggt sich Client2 als Verbindung 2 und Client 3 als Verbindung 3 ein.

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.

Die Sendenprozedur des Servers sieht momentan so aus:

Delphi-Quellcode:
procedure TMain.serverDatenSenden(clientNummer: integer; m : TMemoryStream);
var
  ContextList: TList;
  i: Integer;
begin
  ContextList := Main.ModulServer.Contexts.LockList;

      try
        for i := 0 to ContextList.Count - 1 do
          begin
            if clientNummer - 1 = i then
              begin
                try
                  TIdContext(ContextList[i]).Connection.IOHandler.Write(m, 0, true);
                finally
                end;
              end;
          end;
       finally
         Main.ModulServer.Contexts.UnlockList;
       end;
    end;
end;

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.
  Mit Zitat antworten Zitat
 


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 07:15 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