AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ServerSocket: ActiveConnections stimmt nicht immer
Thema durchsuchen
Ansicht
Themen-Optionen

ServerSocket: ActiveConnections stimmt nicht immer

Ein Thema von Helmi · begonnen am 4. Feb 2007 · letzter Beitrag vom 5. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 20:16
Hallo Jungs,

ich muss ein leidiges Thema über ServerSocket ansprechen, dass ich mal wieder hab:

Ich hab zwei Programme vor 2 Jahren geschrieben, die mit ServerSocket und ClientSocket miteinander kommunizieren.
Funktioniert bestens - ehrlich!

Nur hab ich mir mal eine ComboBox einfallen lassen, in der die aktuellen Clients aufgelistet werden.
(Man kann dort was auswählen - aber dies ist nicht interessant für dieses Problem).

Um festzustellen, wieviele Einträge in der ComboBox vorhanden sein müssen, wird in einem Timer geprüft, wieviele Verbindungen vorhanden sind (ServerSocket.ActiveConnections).
Auch das funktioniert - ehrlich!

Nur leider stimmt die Anzahl der ActiveConnections nicht immer - ehrlich!

Ich weiss, dass es nur einen Client gibt - nur manchmal werden mir 2 Clients oder mehr angezeigt.

Weiss jemand an was das liegen könnte?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 20:26
Wo fragst du die Eigenschaft ab? Im OnDisconnect? Wenn ja ist der grade disconnectete Client immer noch in der Liste .. dh du musst einen abziehen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 20:45
Hallo,

Abgefragt wird in einem Timer:
Delphi-Quellcode:
procedure TMainForm.Timer_ConnectionTimer(Sender: TObject);
var
  Anzahl_Verbindungen: Integer;

begin
  //Timer disablen
  Timer_Connection.Enabled := false;

  //Variable beschreiben
  Anzahl_Verbindungen := ServerSocket.Socket.ActiveConnections;

  //Ist aktuelle Anzahl ungleich der alten Anzahl...?
  If (Anzahl_Verbindungen <> alte_Anzahl_Verbindungen) then
    begin
      //Label beschreiben
      Label_Anzahl_Verbindungen.Caption := IntToStr(Anzahl_Verbindungen);

      //Listbox leeren
      ListView_Client_Dateien.Clear;

      //Label leeren
      Label_Client_IP.Caption := '';

      //ComboBox-Einträge aufbauen
      ComboBox_schreiben(Default_Client_S, false);

      //ausgewählten Client zurücksetzen
      ausgewaehlter_Client := -1;

      If Anzahl_Verbindungen = 0 then
        begin
          //enablen
          EnDisableComponents(true);

          //Timer disablen
          Timer_Ueberwachung.Enabled := false;

          //Label beschreiben
          Label_Verbindung_Info.Caption := 'keine Verbindung vorhanden!';
        end
      else
        begin
          //Label beschreiben
          Label_Verbindung_Info.Caption := 'Verbindung wurde aufgebaut!';
        end;

      //Variable beschreiben
      alte_Anzahl_Verbindungen := Anzahl_Verbindungen;
    end;

  //Timer enablen
  Timer_Connection.Enabled := true;
end;
Der Timer läuft immer.

in OnDisconnect konnte ich es damals nicht machen, da OnDisconnect - sofern ich es noch im Kopf habe - nur ausgelöst wird, wenn kein Client mehr verbunden ist - sind es aber mehrere Clients, von denen sich einer abmeldet - wird onDisconnect nicht ausgelöst
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 20:57
Doch sowohl OnConnect als auch OnDisconnect wird für jeden Client ausgelöst. Insofern kannst du die ActiveConnections Eigenschaft immer dort abfragen, wobei du im OnDisconnect halt einen Client abziehen musst.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 21:09
Sei´s wie´s mag!
Unabhängig ob jetzt das in OnConnect, bzw. im OnDisConnect passiert, wird im Timer, der ja immer läuft, ActiveConnections ständig abgefragt - das heisst aber auch, dass die Anzahl der Verbindungen im ActiveConnections falsch ist
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#6

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 21:16
Zitat von Florian Bernd:
Doch sowohl OnConnect als auch OnDisconnect wird für jeden Client ausgelöst. Insofern kannst du die ActiveConnections Eigenschaft immer dort abfragen, wobei du im OnDisconnect halt einen Client abziehen musst.
Ich hab jetzt mal einen Test gemacht.
Im OnDisconnect hab ich folgenden Code reingeschrieben:
Label1.Caption := IntToStr(ServerSocket.Socket.ActiveConnections); Das würde ja bedeuten, dass beim Disconnecten eines Clients die Anzahl der Verbindungen im Label1 sich verringern müsste, nur dies passiert nicht, daraus resultiert, dass OnDisConnect nicht ausgeführt wird, wenn noch eine andere Verbindung besteht.

Mein Timer hat dies aber mitbekommen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 21:30
Wie gesagt .. du musst im OnDisconnet einen Client abziehen dh:
Label1.Caption := IntToStr(ServerSocket.Socket.ActiveConnections -1);
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#8

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 21:50
Zitat von Florian Bernd:
Wie gesagt .. du musst im OnDisconnet einen Client abziehen dh:
Label1.Caption := IntToStr(ServerSocket.Socket.ActiveConnections -1);
Danke - hab jetzt rausgefunden warum mann 1 abziehen muss.

Nur bleibt die Frage, warum die Anzahl der Verbindungen im ActiveConnections nicht immer stimmt
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 21:53
Soweit ich das gesehen habe, kann das sein, wenn ein Client sich nicht ganz Standardkonform verabschiedet .. sprich z.b. der Prozess terminiert wurde ..
Da hilft meistens im OnException Ereigniss das OnDisconnect Ereigniss aufzurufen und ErrorCode auf 0 zu setzen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#10

Re: ServerSocket: ActiveConnections stimmt nicht immer

  Alt 4. Feb 2007, 21:55
Meinst du das im Client?

und welchen ErrorCode - dem in OnException?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:23 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