Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#20

Re: Threads, welche Lösung haltet Ihr für eleganter ?

  Alt 29. Jun 2006, 01:08
Ja das ist ein sehr kourises Verhalten das wir feststellten.

Wir installierten das erste mal Firebird und fingen an uns Gedanken zu machen wie wir die Connection IDs zu einem angemeldeten User umwandeln können und darauf basierend eine eigene Table mit User Verwaltungsdaten füttern könnten. Wichtig dabei war es das in einem Netzwerk ein Benutzer immer nur einmal angemeldet sein durfte.

Das ganze kann nur funktionieren wenn auf Serverseite korrekt erkannt werden kann wenn ein Benutzer sich abgemeldet hat, egal ob aktiv oder indem er den Rechner hart ausschaltet oder sogar indem er das Netzwerkkabel rauszog.

Tja es stellte sich heraus das der Firebird Server nicht auf solche verlorene Verbindungen reagierte, sondern eher das diese Connections ne halbe Ewigkeit aufrecht erhalten blieben.

Es lag an der Konfiguration des Win2k Servers und dessen Sockets. Sie überprüften eine Verbindung nur alle 12 Stunden !! Im MSN kann man nachlesen das dieser Wert von MS absichtlich so hoch gewählt wurde um Netzwerk Resourcen zu sparen.

Wird im TCP/IP eine Verbindung sauber geschlossen so kann dieses Verhalten NICHT auftreten, denn für diesen Zweck gibts im TCP/IP ein Kommando. Nur wenn man das Kabel zieht tritt dies auf. Denn um sowas zu erkennen muß man die stehende Verbindung von Zeit zu Zeit aktiv checken, zb. ein Ping oder ähnliches (wie oben ein NOOP als Keepalive).

[edit]
achso ganz vergessen dieses Verhalten ist unabhängig von INDY oder anderen Socket Komponenten, sondern einfach ein quasi unlösbares Problem jeder TCP/IP Verbindung. Unlösbar wenn man nicht AKTIV die stehenden Verbindungen dauernd überprüft. Denn beim gezogenen Netzwerkkabel, bei hart getrennter INet Verbindungen durch Provider etc.pp. haben die geöffneten Sockets keinerlei Chance mehr über das Schließen des nun nicht mehr ansprechbaren Host informiert zu werden. (wie auch ? )
[/edit]

Gruß Hagen
  Mit Zitat antworten Zitat