Entwickler-Ecke

Internet / Netzwerk - TClientServer.Socket.ActiveConnections


BiBi - Di 14.01.03 01:35
Titel: TClientServer.Socket.ActiveConnections
Hallo

ich bin neu in diesem Forum und habe ein Problem mit TClientServer.Socket.ActiveConnections

Ich habe einen Server und einen Client. Im Server zeige ich in einem Label die derzeit verbundenen Clients an mit

Quelltext
1:
Label1.Caption := IntToStr (TClientServer.Socket.ActiveConnections);                    

In unregelmässigen Zeitabständen von ca 1 bis 10 Sekunden bekomme ich als Anzeige, dass 2 Clients verbunden sind obwohl nur 1 Client läuft. Auch wenn ich mehrere Clients starte, erscheint immer wieder 1 Client mehr in der Anzeige als tatsächlich verbunden sind.

Habt ihr schon mal so einen Fehler gehabt und wenn ja, wie habt ihr ihn abgestellt.

Voraus vielen Dank.

BiBi


BungeeBug - Di 14.01.03 13:52

also wenn ich das richtig interprtiere dann heisst activeconnection wirklich nur activeconnection was wiederum heisst das nur aktive Verbindungen gezält werden und das sind nun mal nur die die gerade Daten senden oder empfangen ... mein Tip (nein nicht MirakelWip) schick doch beim Verbinden einfach nen bestinmmten String an den Server der dann verursacht das der Server ne Variable eins weiter zählt ...

MfG BungeeBug
Sorry für die komische Ausdrucksweise :)


BiBi - Di 14.01.03 17:18

Servus,

danke für deinen Tip. Jedoch vermute ich den Fehler eher an anderer Stelle, die ich jedoch nicht kenne. Größtenteils liefert die Anzeige ActiveConnections die richtige Anzahl an Verbindungen. Nur ab und zu erscheint 1 Verbindung zusätzlich in der Anzeige. Das kann aber nur von einem anderen Verbindungsaufbau herkommen (glaube ich). Es läuft aber definitiv nur 1 Client. Könnte es von der 2.ten Netzwerkkarte kommen? Hat eigentlich eine andere IP.
Wenn ich versuche Daten vom Server an den Client zu senden über
Connections[Index] erhalte ich am Server Fehlermeldungen, weil die zusätzliche Verbindung nicht existiert.

tschau
BiBi


patmann2001 - Di 14.01.03 19:52

Hallo
Eigentlich solltest Du eine Null bekommen wenn Du diesen Quellcode benutzt:

Quelltext
1:
 Label1.Caption := IntToStr (TClientServer.Socket.ActiveConnections);                    

Denn ActiveConnections fängt bei Null an zu zählen.
Mach doch mal in deinem Server ein RichEdit auf und füge folgende Zeile in das Ereigniss OnClientConnect

Quelltext
1:
richedit1.items.add('Ein Client hat sich verbunden');                    

Dann sollte dieser Text nur einmal Auftauchen wenn sich nur ein Client verbindet. Ansonsten taucht dieser Text bei jeder weiteren Verbindung auf.

cu Patmann


BiBi - Di 14.01.03 23:42

Hallo,

vielen Dank für den Tip, werde ich gleich mal probieren.

tschau
BiBi


BiBi - Mi 15.01.03 00:05

@patmann2001

Hallo und vielen Dank für den Tip. Habe den Fehler gefunden. Habe leider beim Client übersehen, dass ich kontrolliere ob ClientSocket1.Active = True
ist, bevor ich beim inaktiven Zustand den Client automatisch durch einen Timer starte.

Gruß
BiBi