Finden von Computern im Netzwerk mit LNet [gelöst]

Alle Fragen zur Netzwerkkommunikation
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von corpsman »

Hallo Zusammen,
ich habe hier ein Problem und wollte eure Meinung wissen.

Ich Schreibe gerade ein kleines Computerspiel ( Client / Server Bassiert )

Quasi als Feature listet mein Programm alle Aktiven Server in einer Liste auf, wenn der Client Joinen will.

Dies geschieht in dem der Server auf einem UDP-Port "listen"ed
und alle Clients via UDP-Broadcast ins Netz pingen.

Sobald der Server einen Ping erhählt antwortet er und sendet seine Serverdaten.

Der Client der das dann empfängt weiß nun anhand der Antwort auf welcher IP der Server sitzt und kann sich auf diesen Verbinden (TCP).

All das funktioniert mit LNet UDP und TCP wunderbar.

Aber !

Sobald ein Client mehr wie eine Netzwerkkarte hat wird der UDP-Broadcast an "irgend" eine Netzwerkkarte gesendet und nicht an Alle. Und wie es der Zufall so will ist das natürlich immer die Falsche. Meine Anwendung hat deswegen die Möglichkeit die Server-IP auch händisch ein zu geben. Macht man das kann das Spiel dann ganz normal gestartet werden.

Daraus ergibt sich folgende Problemstellung bei der ich um eure Hilfe Frage:
1. Wie kriegt man raus dass es mehrere Netzwerkkarten im System gibt (und deren IP-Addressen) (Meine Anwendung läuft auf Windows64, Linux64)
2. genügt es dann einfach anstatt wie bis jetzt

Code: Alles auswählen

  If Not fUDPConnection.Connect('127.0.0.1', UDPPingPort) Then Begin
für jede einzelne Nezwerkkarte die entsprechende IP zu nehmen und einfach entsprechend viele UDP.Connect zu machen ?
Zuletzt geändert von corpsman am Do 20. Jan 2022, 17:34, insgesamt 1-mal geändert.
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet

Beitrag von corpsman »

Sodale, ich hab da mal was gebastelt (siehe Anlage)

Nur Testen kann ich es nicht, weil der einzige Windows Rechner auf den ich direkt zugriff habe dieses Problem nicht hat ..

Findet sich hier im Forum jemand der das Testen kann ?

Man braucht mindestens 2 Rechner, einer davon muss ein Windows Rechner mit mehreren Netzwerk Adaptern sein. Auf dem Anderen Rechner muss die Anwendung im "Server" Modus gestartet werden.

Dann am "Client" Rechner auf "Poll servers via localhost" drücken -> Wenn er dann nichts findet ist das gut, denn dann kann validiert werden ob "poll for servers via adapter" was findet (wass dann auch hoffentlich der Fall ist). Sollte das poll server via localhost bereits eine Antwort bekommen dann ist euer system wie meins und der "korrekte" Netzwerk adapter ist bereits der Default.

Zu den guten alten Windows XP Zeiten konnte man übrigens die Reihenfolge der Nezwerkadapter selbst festlegen unter Windows 10 finde ich die Option nicht mehr ...
Screenshot at 2022-01-20 15-04-39.png
Screenshot at 2022-01-20 15-04-39.png (41.72 KiB) 2945 mal betrachtet
Dateianhänge
network_finder.zip
(4.89 KiB) 106-mal heruntergeladen
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet

Beitrag von corpsman »

Sodale, hab jemand gefunden zum Testen
-> Die Lösung kenne ich nun auch ist viel einfacher als erwartet ;)
Sobald der Code vorzeigbar ist poste ich ihn hier.

[Edit]
Wie versprochen im Anhang der Code, bei mir hat er unter Windows 11 mit Linux Funktioniert ;)
Dateianhänge
Network_finder_final.zip
(5.25 KiB) 134-mal heruntergeladen
--
Just try it

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von siro »

Guten Morgen,
ich wollte das Programm grad probieren,
aber bei mir kommt immer die Meldung:

Kann Projekt nicht compilieren
Projekt hat keine Haupt-Quelldatei

Irgendwie sieht meine IDE auch völlig leer aus wenn ich die
.lpi oder .lpr Datei lade.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von corpsman »

Das liegt dann daran, dass deine Lazarus version zu alt ist (siehe hier: https://corpsman.de/index.php?doc=faq#Frage8 )

Ich hab da zwar nen LPI Downgrader geschrieben, aber wie ich gerade feststellen musste ist der nicht Online, ich schau mal dass ich das nachhohle ...
--
Just try it

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von siro »

Ahso, okay, ich bin grade am updaten,
ich danke Dir für die Info.

Wenn ich jetzt Update gehen dann meine momentanen Programme nicht mehr ?
:shock: ich wart mal lieber noch.... :mrgreen:
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von corpsman »

Also der unterschied ist hauptsächlich das der Aufbau der .lpi XML Dateien nun "einfacher" ist.
Früher gab es ein Attribut Count das die IDE ausgelesen hat und dann Count entsprechend viele EInträge geladen hat, heute (neu) gibt es das nicht mehr, die "neue" IDE kann aber Problemlos die alten files laden -> Ein Update sollte kein Problem sein

Hier mal ein Beispiel was sich alt gegen neu geändert hat
XML Alt

Code: Alles auswählen

<Files Count=2>
 <File0>
 ..
 </File0>
  <File1>
 ..
 </File1>
</Files>
XML Neu

Code: Alles auswählen

<Files>
 <File>
 ..
 </File>
  <File>
 ..
 </File>
</Files>
--
Just try it

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von siro »

Danke für die Zustz Info,
Das liesse sich ja händisch nachbessern, sofern erforderlich...
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von corpsman »

ja mein lpi downgrade tool macht das auch von Hand und dann gehts ja auch, bin halt nur grad auf der Arbeit da habe ich das nicht zur Hand
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von corpsman »

Siehe Anhang das "geänderte" .lpi file
project1.zip
ist als zip weil .lpi nicht akzeptiert wurde, also einfach enptacken
(813 Bytes) 113-mal heruntergeladen
--
Just try it

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von siro »

Läuft jetzt, auch mit der alten Lazarus Version
Danke Dir.
Network_Finder.jpg
Network_Finder.jpg (58.52 KiB) 2581 mal betrachtet
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Finden von Computern im Netzwerk mit LNet [gelöst]

Beitrag von corpsman »

So und ich hatte gestern eine kleine Debug Session mit einem Windows User, daraufhin wurde das Programm noch mal ein klein wenig angepasst. Hier der Aktuelle Stand ;)
Dateianhänge
Network_finder.zip
(5.3 KiB) 124-mal heruntergeladen
--
Just try it

Antworten