Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Server im Netz finden (LAN/Game) (https://www.delphipraxis.net/64817-server-im-netz-finden-lan-game.html)

NookShar 8. Mär 2006 15:41


Server im Netz finden (LAN/Game)
 
Hallo,

ich habe folgendes Problem: Ich schreibe ein LAN Spiel und such gerade nach einer Möglichkeit alle Rechner im Netzwerk aufzulisten auf denen ein Server läuft. Alle anzupingen und ein Portcheck durchführen dauert ewig. Am besten brauch ich die IP und den Rechnername.

Also wenn wer Tips, Routine o.ä. bitte helfen!

Gruß NookShar

Bernhard Geyer 8. Mär 2006 15:57

Re: Server im Netz finden (LAN/Game)
 
Um anpingen und port-check wirst du nicht herumkommen. Aber du kannst diese aktion mittels mehrer Threads gleichzeitig für mehrere IP's durchführen lassen.

BenjaminH 8. Mär 2006 15:58

Re: Server im Netz finden (LAN/Game)
 
Ich denke ein Broadcast ist das richtige, auch wenn ich keine Ahnung hab, wie das funktioniert ;-)

supermuckl 8. Mär 2006 15:59

Re: Server im Netz finden (LAN/Game)
 
vorschlag:

mach einen threaded portcheck ohne ping

supermuckl 8. Mär 2006 15:59

Re: Server im Netz finden (LAN/Game)
 
jep oder einen UDP broadcast an die broadcast adresse im netzwerk

PierreB 8. Mär 2006 16:03

Re: Server im Netz finden (LAN/Game)
 
Oder jeder aktivierte Server sendet seine Daten an eine Webseite o.a., dann hast du da alle parat und die Clients können sie ganz einfach abrufen. ;)

DGL-luke 8. Mär 2006 16:15

Re: Server im Netz finden (LAN/Game)
 
Warum nicht den Client broadcasten und den Server zurückmelden lassen? Eleganter als IP-Scan...

NookShar 8. Mär 2006 16:42

Re: Server im Netz finden (LAN/Game)
 
okay, Thread + Ping hört sich ja schon ganz gut an. aber ich habe keine große Ahnung von Threads...

wie geht das genau. ich hab bis jetzt das hier:
Delphi-Quellcode:
TSearchThreadI = class(TThread)
  protected
    procedure Execute; override;
  end;
und im Execute dann eine schleife die alle 255 IPs im Netz durchgeht.
Aufgerufen wird das wie folgt: TSearchThreadI.Create(false);

wie könnte ich das denn machen um mehrere Threads laufen zu lassen die alle unterschiedliche IPs pingen, oder gar 255 threads für jede IP einen (wenn das möglich/sinnvoll ist) ??

Und wie geht das mit dem Broadcast?


Gruß Nookshar

@PierreB: soll ja in nem reinen LAN ohne Inet funktionieren ;)

Tubos 8. Mär 2006 17:01

Re: Server im Netz finden (LAN/Game)
 
Zitat:

und im Execute dann eine schleife die alle 255 IPs im Netz durchgeht.
In einem lokalen Netzwerk können sich mehr als 255 Hosts befinden.

Lass einfach den Client einen Broadcast, also ein UDP-Paket an 255.255.255.255, schicken. Das geht mit den Indy-Komponenten ganz einfach.
Der Server horcht in einem Thread auf das entsprechende Paket und antwortet.

NookShar 8. Mär 2006 17:08

Re: Server im Netz finden (LAN/Game)
 
Zitat:

Zitat von Tubos
Zitat:

und im Execute dann eine schleife die alle 255 IPs im Netz durchgeht.
In einem lokalen Netzwerk können sich mehr als 255 Hosts befinden.

stimmt, hast recht. Ich dachte jetzt nur an 192.168.0.x ^^

Zitat:

Zitat von Tubos
Lass einfach den Client einen Broadcast, also ein UDP-Paket an 255.255.255.255, schicken. Das geht mit den Indy-Komponenten ganz einfach.
Der Server horcht in einem Thread auf das entsprechende Paket und antwortet.

und wie kann man mit den Indys einen solchen Broadcast durchführen, und wie muß der Thread im Server aussehen?


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