Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ursache von Socketerror 10061 "Connection refused" ? (https://www.delphipraxis.net/85430-ursache-von-socketerror-10061-connection-refused.html)

albert1985 30. Jan 2007 19:00


Ursache von Socketerror 10061 "Connection refused"
 
Hallo !

Ich versuche gerade mithilfe eines Timers eine Verbindung (Client > Server) aufzubauen...
Jedoch erscheint dann der besagte Fehler 10061 ... Ich weiß jedoch nicht genau woran das liegen könnte ...
Habe zum Testen folgenden Code verwendet:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  with IdTCPClient1 do
    try
      Host := '127.0.0.1';
      Port := 6333;
      Connect;
    finally end;
end;
Zur Info: Den Server hab ich nicht gestartet ... aber das müsste doch normalerweise trotzdem funktionieren oder ?

oki 30. Jan 2007 20:18

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Zitat:

Zitat von albert1985
Zur Info: Den Server hab ich nicht gestartet ... aber das müsste doch normalerweise trotzdem funktionieren oder ?

und wohin sollte sich der Client dann connecten? Wenn du deinen Server startest, dann bekommst du auch keinen Fehler mehr.

Gruß oki

albert1985 30. Jan 2007 20:22

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Hm, ja :)
Aber es müsste doch auch irgendwie möglich sein, dass der Client es quasi nur "versucht" zu connecten
und falls dies nicht möglich ist eben einfach die procedure beendet ...
Er sollte quasi abfragen, ob der Server erreichbar ist und dann erst connecten ...
Hast du vielleicht dazu eine Idee?

Helmi 30. Jan 2007 20:22

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Hallo,

ich hatte auch mal das Problem, dass der Client einen Server suchen soll.

Hab das damals so gelöst (zwar mit den Socket-Komonenten - ist aber umschreibbar:
Delphi-Quellcode:
procedure TMainForm.Timer_toggleTimer(Sender: TObject);
begin
  with ClientSocket do
    begin
      try
        //ClientSocket schliessen
        Active := false;
        Socket.Close;
        Close;

        //ClientSocket beschreiben
        Port   := SpinEdit_Port.Value;
        Address := S_Adresse;
      finally
        // leer
      end;

      //Versuchen die Verbindung zu öffnen...
      try
        //ClientSocket öffnen
        Open;
      except
        //ClientSocket schliessen
        Active := false;
        Socket.Close;
        Close;
      end;
    end;
end;
kurze Erklärung: er versucht den Port zu öffnen, geht das nicht (except) dann wird wieder geschlossen und von neuem begonnen

oki 30. Jan 2007 20:32

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Hi,

mit connect wird ja gerade versucht den Server zu connecten. Es wird dir halt über die Exception der Grund des Fehlschlag's detailiert zurück gegeben.

Nach einem fehl geschlagenen Connect ist meines Wissens die Socket aber nicht aktiv. Somit erübrigt sich das Close in der Exceptionbehandlung. Diese sorgt nur dafür, dass der Fehler nicht gemeldet wird. Damit du merkst was schief geht solltest du aber wenigstens eine entsprechende Meldung in ein Log oder ähnliches bringen.

Gruß oki

Helmi 30. Jan 2007 20:37

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Zitat:

Zitat von oki
Damit du merkst was schief geht solltest du aber wenigstens eine entsprechende Meldung in ein Log oder ähnliches bringen.

Wieso sollte ich das tun?
Bei mir läuft der Client "lautlos" im Hintergrund (wird mit Windows gestartet). Er prüft ständig, ob eine Verbindung besteht (oberer Code). Ist keine Verbindung möglich, soll er es einfach weiter probieren.
Findet er nichts - macht er einfach weiter - findet er was - ist alles bestens!

Ach ja - nur kurz zur Erklärung: Mein Programm ist kein Programm, mit dem der Bediener arbeitet. Mein Programm ist ein ISDN-Monitor Client - der einfach horcht, ob eine Verbindung zu einem Server besteht - wenn nicht - gibts auch nichts anzuzeigen

oki 30. Jan 2007 20:44

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Hi helmi,

ich meinte eigentlich Albert, da er den Thread gepostet hat. Ob sein Programm wie deins im Hintergrund arbeitet hat er nicht gesagt. Ich möchte bei meinen Programmen immer gern wissen was gerade Sache ist und warum. Und die Connection zu einem Server kann schon mal schnell den Bach runter gehen.

Gruß oki

albert1985 30. Jan 2007 20:51

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Hi oki,
Nein mein Programm arbeitet soweit nicht im Hintergrund ... Es soll eigentlich mehr ein Testprogramm werden,
um einfach mal in die Client-Server-Programmierung einzusteigen... Vielleicht werd ich ein kleines Chat-Proggi
draus machen... mal sehen !

PS: Hab das Problem bereits "gelöst" ;)
Es wird zwar ein Fehler beim debuggen angezeigt (was wahrscheinlich auch unvermeidbar ist), jedoch
wird ein Benutzer des Clients (also der fertigen exe) nicht durch Fehler oder Abstürze gestört, wenn ich noch ein "except" einbaue ...

Dann funktioniert alles genau so wie ich es wollte. ;)

MfG

oki 30. Jan 2007 20:56

Re: Ursache von Socketerror 10061 "Connection refused&a
 
Alles klar.

Denk trotzdem dran anzuzeigen ob eine Verbindung etabliert ist. Wenn der Benutzer bei seinen Eingaben keine Reaktion sieht und nicht weis warum, ist das Bein schnell dick.

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz