Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Indy Client (https://www.delphipraxis.net/97560-problem-mit-indy-client.html)

Reyam 12. Aug 2007 21:07


Problem mit Indy Client
 
Hallo,

Ich versuche ein selbstgeschriebenes Spiel als Internet-Spiel mit Indy zu programmieren. Nun möchte ich, bevor der Client sich verbindet, nach vorhandenen Servern suchen.
Meine Versuche sind:

Delphi-Quellcode:
procedure TForm7.ServerSuchen;
var i: integer;
begin
  for i := 52000 to 52100 do
  begin
    Client.Port := i;
    try
      Client.Connect(1000); //procedure wird beendet bei except
    except   //mit finally kommt das Problen: "Socket Error #10061 Connection refused"

    end;
    If Client.Connected then
    begin
      CCB.Kommentar := 'TRIO_SUCHE_SERVER';
      Client.WriteBuffer(CCB,SizeOf(CCB),true);
    end;
  end;
end;
Der Client gibt dann beim verbinden eine Fehlermeldung aus oder versucht es einmal sich zu verbinden, und da nach nicht mehr.

Oder gibt es eine andere Möglichkeit Server zu suchen?
Ich hoffe, dass ihr mir dabei helfen könnt.

Mfg.

Florian Mayer

Apollonius 12. Aug 2007 21:13

Re: Problem mit Indy Client
 
Du klapperst hier gerade Ports ab und nicht Hosts. Im Internet gibt es nur eine Möglichkeit: Ein "Überserver" auf einer festen Adresse verwaltet alle eigentlichen Server. Die Server müssen sich also an- und abmelden, und du als Client empfängst die Liste aller aktiven Server. Der "Überserver" würde normalerweise mit PHP realisiert.
Im lokalen Netzwerk könnte man auch einen UDP-Broadcast durchführen, den die Server beantworten müssen.

Reyam 12. Aug 2007 21:17

Re: Problem mit Indy Client
 
Ich habe das mit den Ports aus einem Indy Beispiel und da das für mich einfach erschien habe ich ds gleich umgeschrieben. Nur wie soll ich das mit dem "Überserver" machen?

Apollonius 12. Aug 2007 21:27

Re: Problem mit Indy Client
 
Als Client brauchst du einen Host. So einfach. Nur als Hinweis: Der Port sollte fest sein, du sagst also, mein Programm kommuniziert auf Port 58346, fertig aus.

Zu deiner Frage: Du brauchst einen festen Server, also entweder einen öffentlichen oder deinen Webspace.

Reyam 12. Aug 2007 21:34

Re: Problem mit Indy Client
 
Vielen Dank für die Antwort.

Ich werde das aber glaube ich einfacher lösen, dass der Client sich vorher mit der anderen Person absprechen muss und dieser gibt ihm dann die Daten.
Das lohnt glaube ich noch nicht für dieses Spiel einen festen Server zu benutzen. :wink:

Apollonius 12. Aug 2007 21:40

Re: Problem mit Indy Client
 
Und dieser gibt ihm dann die Daten? Dir ist hoffentlich bewusst, dass die Mitteilung der IP-Adresse und das eigentliche Spiel in der selben Internet-Sitzung des Servers erfolgen müssen, da sich andernfalls die IP ändert!?

Reyam 13. Aug 2007 13:26

Re: Problem mit Indy Client
 
Dann geht das halt nur bei leuten, die sich über ICQ oder sonst wie verständigen können, umd die Daten dem anderen mitzuteilen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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