Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TClient & TServer socket verbindung (https://www.delphipraxis.net/79341-tclient-tserver-socket-verbindung.html)

TobiasT 20. Okt 2006 14:17


TClient & TServer socket verbindung
 
Hi@all,

Komponenten:
TClient &
TServer Socket

Problemfall:
Ein Online-Spiel das die Verbindung zum Server aufbauen soll, wenn das Programm gestartet wird.
Wenn aber der Server nicht zu errichen ist, dann gibt er einen Asynchron Fehler aus und der Client versucht nicht mehr zu verbinden.

Frage:

ist es möglich den Clienten so lange verbinden zu lassen, bis das Programm geschlossen wird oder die Verbindung zum Server steht?



Mfg Tobias

inherited 20. Okt 2006 14:22

Re: TClient & TServer socket verbindung
 
Delphi-Quellcode:
repeat
  try
    tcpclient1.Connect;
  except
    inc(TriesToConnect);
  end;
until tcpclient1.Connected;
Bedenke aber, dass das nicht unbedingt die beste lösung ist, so wie du das machen willst!

freak4fun 20. Okt 2006 14:29

Re: TClient & TServer socket verbindung
 
Zitat:

Zitat von inherited
Delphi-Quellcode:
repeat
  try
    tcpclient1.Connect;
  except
    inc(TriesToConnect);
  end;
until tcpclient1.Connected;
Bedenke aber, dass das nicht unbedingt die beste lösung ist, so wie du das machen willst!

Öhm... dann hängt sich das Programm auf. Außer, da kommt ein Application.ProcessMessages; rein, das Connect kommt in einen Timer / Thread. Vielleicht sollte man auch noch andere Abbruchbedingungen einbauen. ;) Von der Grundidee aber richtig.

MfG
Freak

inherited 20. Okt 2006 14:34

Re: TClient & TServer socket verbindung
 
ARG, sehe jetzt erst, dass er sich auch mittendrin beenden sollen kann, sorry. Natürlich, Threads+Abbruchbedingung :wall:

TobiasT 20. Okt 2006 14:47

Re: TClient & TServer socket verbindung
 
Er gibt mir Leider immernoch einen Asynchron Fehler aus...

So sieht mein code zum connecten aus:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Client.Address:='127.0.0.1';
Client.Port:=4100;
repeat
  Application.ProcessMessages;
  try
    client.Active:=true;
  except
    inc(TriesToConnect);
  end;
until client.Socket.Connected=true;
end;
Was mache ich falsch?

freak4fun 20. Okt 2006 14:49

Re: TClient & TServer socket verbindung
 
Hast du das programm mal über die *.exe gestartet und nicht über F9?

ste_ett 20. Okt 2006 14:51

Re: TClient & TServer socket verbindung
 
Prüfe mal, ob auf dem Port überhaupt was läuft, bei einem Connect auf localhost ist ein Fehler in der Verbindung eher unwahrscheinlich.

Sowas
Delphi-Quellcode:
until client.Socket.Connected=true;
macht man nicht. :)

Besser:
Delphi-Quellcode:
until ((client.Socket.Connected) or (TriesToConnect >= MAX_TRIES));

TobiasT 20. Okt 2006 14:59

Re: TClient & TServer socket verbindung
 
Hab das Programm über die exe gestartet und den code von ste_ett eingebaut.

Wenn der Server läuft, geht alles Wunderbar!

Wenn der Server ausgeschaltet ist, hängt sich das Programm auf, es kommt keine Form und nach einiger Zeit eine Asynchron Fehler meldung...

ste_ett 20. Okt 2006 15:03

Re: TClient & TServer socket verbindung
 
Zitat:

Zitat von TobiasT
Hab das Programm über die exe gestartet und den code von ste_ett eingebaut.

Wenn der Server läuft, geht alles Wunderbar!

Wenn der Server ausgeschaltet ist, hängt sich das Programm auf, es kommt keine Form und nach einiger Zeit eine Asynchron Fehler meldung...

Logisch. :)
Wenn keine Anwendung antwortet, wird ewig versucht, eine Verbindung aufzunehmen und das Programm bleibt in der Schleife hängen.
Wenn du das z.B. im FormCreate machst, siehst du keine Form, da das Programm diese noch nicht erstellt hat.

Wie hoch hast du MAX_TRIES gesetzt?

Du solltest auch in den Schleifendurchlauf ein "Sleep();" und ein "Application.ProcessMessages" einbauen.

freak4fun 20. Okt 2006 15:08

Re: TClient & TServer socket verbindung
 
Warum Sleep?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.
Seite 1 von 2  1 2      

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