AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy10: Problem wenn ein Client Verbindung vom Server trennt
Thema durchsuchen
Ansicht
Themen-Optionen

Indy10: Problem wenn ein Client Verbindung vom Server trennt

Ein Thema von McMorton · begonnen am 23. Jun 2006 · letzter Beitrag vom 26. Jun 2006
Antwort Antwort
McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#1

Indy10: Problem wenn ein Client Verbindung vom Server trennt

  Alt 23. Jun 2006, 18:02
Hallo
Ich brauche mal Hilfe bei meinem TCPServer (Indy 10)

Am besten erklär ich erstmal was ich mache

Der Server kann sich mit mehreren Clients verbinden.
Auf welchen Ports er auf Clients warten soll stell ich so ein:

Delphi-Quellcode:
procedure TServer.setnewPort( Port: Integer);
var
  aNumberofBindings: Integer;
begin
  self.FIndyServer.Bindings.Add;
  aNumberofBindings := self.FServer.Bindings.Count;
  self.FIndyServer.Bindings.Items[aNumberofBindings-1].Port := Port;
end;
Dannach starte ich den Server.
Wenn sich nun eine Client verbindet, dann merke ich mir in dem Eventhandler des OnConnect-Events von Indy wer sich da verbunden hat:

Delphi-Quellcode:
procedure TServer.IndyConnect(aContext: TIdContext);
var
  aPort: Integer;
begin
  //Lies Port, auf den sich verbunden wurde
  aPort := aContext.Binding.Port;
  //Erstelle Objekt zum Speichern des Ports in der Verbindungsliste des Indy-Servers
  aContext.Data := TClientPort.Create; //(Simples Objekt, das den Port enthalten wird)
  //Speicher Port im Objekt
  (aContext.Data as TClientPort).Port := aPort;
end;
Nun kann ich Daten senden und empfangen. Das funktioniert alles einwandfrei.
Die Clients unterscheide ich Anhand des Ports auf dem sie sich Verbunden haben (ist ja in dem TClientPort Objekt gespeichert)
Aber wenn nun ein Client die Verbindung beendet, wird ja das OnDisconnect Event beim Server geworfen

Wenn ich dort nichts weiter mache, dann bekomme ich ein Problem wenn sich der Client auf dem Port nochmal verbinden will.
Die Verbindung wird vom Server zwar entgegengenommen, man kann auch Daten empfangen, aber der Server kann nicht mehr senden.
Anscheinend müssen das Binding für diese Verbindung igentwie zurückgesetzt werden.
Wenn ich nur einen 1 zu 1 Verbindung habe (ein Server, ein Client), dann kann ich einfach schreiben:

Delphi-Quellcode:
procedure TServer.IndyDisconnect(aContext: TIdContext);
begin
 self.FServer.Active := false;
 self.FServer.Bindings.Clear;
 self.FServer.Active := true;
end;
So funktioniert es. Aber das geht ja nicht, wenn man mehrere Verbindungen hat. Ich möchte die anderen Verbindungen ja behalten.

Ich hoffe mir kann, trotz des langen und konfusen Textes, jemand helfen.
  Mit Zitat antworten Zitat
McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#2

Re: Indy10: Problem wenn ein Client Verbindung vom Server tr

  Alt 26. Jun 2006, 08:00
Hat den keiner eine Idee?
  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 04:38 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