AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi try ClientSocket1.active:=true führt zu fehler
Thema durchsuchen
Ansicht
Themen-Optionen

try ClientSocket1.active:=true führt zu fehler

Ein Thema von Minz · begonnen am 2. Sep 2003 · letzter Beitrag vom 2. Sep 2003
Antwort Antwort
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#1

try ClientSocket1.active:=true führt zu fehler

  Alt 2. Sep 2003, 00:08
Also ich führe regelmäßig folgenden Code aus:

Code:
procedure TForm1.PingServerTimer(Sender: TObject);
begin
       if ClientSocket1.Active=false then begin
                try
                        ClientSocket1.Open;
                        richedit1.Lines.Add('Checking Server: '+ClientSettingsIP.edit1.text);
                except
                        HandleExceptionPing;
                end;
                exit;
        end;

        if ClientSocket1.Active=true then begin
                panel4.Color:=clGreen;
                Label4.Caption:='Server Online';
        end;
end;
Dies klappt für ein paar Minuten, danach kommen dann bei jedem weiteren Prozeduraufruf Fehlermeldung á la WinSocket oder so.

Weiß jemand wieso das eine Zeit lang gut läuft und dann nicht mehr?
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#2

Re: try ClientSocket1.active:=true führt zu fehler

  Alt 2. Sep 2003, 01:07
Was für einen Interval hat der Timer denn?
Unter Umständen dauert das Öffnen des Sockets irgendwann länger als einen Interval, und du rufst bspw zweimal hintereinander das Open auf.

Du könntest dir ne globale Variable machen. Nen Boolean, den zu z.B, "connecting" nennst.
Nach dem Aufruf vom Open des Sockets setzt du connecting auf true, überprüfst aber vorher ob connecting vielleicht schon true ist.

Also die Modifikation:

Delphi-Quellcode:
procedure TForm1.PingServerTimer(Sender: TObject);
begin
       if ClientSocket1.Active=false and not connecting then begin
                try
                        ClientSocket1.Open;
                        connecting:= true;
                        richedit1.Lines.Add('Checking Server: '+ClientSettingsIP.edit1.text);
                except
                        HandleExceptionPing;
                end;
                exit;
        end;

        if ClientSocket1.Active=true then begin
                panel4.Color:=clGreen;
                connecting:= false;
                Label4.Caption:='Server Online';
        end;
end;
Naja, nur kann ich dir nicht 100%ig sagen, dass das die Fehlerquelle ist. Gibt Delphi bzw. die Exception dir genauere Informationen über den aufgetretenen Fehler?

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#3

Re: try ClientSocket1.active:=true führt zu fehler

  Alt 2. Sep 2003, 01:26
Hmm, das würde aber nur Sinn machen, wenn nach dem Open-Versuch dieser Versuch noch nicht beendet wird.

Wenn der Versuch doch beendet wird, würde der Client niewieder probieren die Verbindung zu öffnen, weil immernoch connecting=true ist!

Aber vielleicht ist das wirklich der Grund, dass alle Versuche nie beendet werden, und irgendwann sind die Handles oder was weiß ich, was er für die Opens verwendet /aus/weg/verbraucht

Hmm werde das bei Gelegenheit mal testen, aber eigentlich sollte man doch davon ausgehen können, wenn nicht connected werden kann, das der Versuch dann auch beendet ist
  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 10:06 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