Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   instanz des eigenen Programms im Netzwerk finden? (https://www.delphipraxis.net/188201-instanz-des-eigenen-programms-im-netzwerk-finden.html)

Marco Steinebach 9. Feb 2016 09:35

instanz des eigenen Programms im Netzwerk finden?
 
Hallo zusammen,
Tschuldigung, mir ist kein sinnigerer Betreff eingefallen.
Ich habe eine Frage:
Mein Prog ist auf zwei Rechnern im lokalen Netzwerk installiert.
Beide haben einen idTCPServer und idTCPClient laufen, um miteinander kommunizieren zu können.
Soweit, so schön.
Gibt es irgendeine Möglichkeit herauszufinden, auf welchem Computer die zweite Instanz läuft...
Also, was ich meine ist:
Das Programm wird auf einem Rechner gestartet und, tja, scannt, das Netz, ob es irgendwo eine zwei, laufende Instanz von sich selber findet.
Ich kann ja schlecht die letzte stelle der IP-Adresse komplett durchscannen, also sowas basteln wie...
Delphi-Quellcode:
for i := 0 to 255 do
begin
  client.host := '192.168.2.* + intToStr (i);
  client.connect;
  if client.connected then // zweite Instanz gefunden;
end;
Das geht doch sicher eleganter, oder?
Für einen Tipp wäre ich sehr dankbar.
Viele Grüße
Marco

vagtler 9. Feb 2016 09:51

AW: instanz des eigenen Programms im Netzwerk finden?
 
https://de.wikipedia.org/wiki/Bonjour_(Apple)

https://www.google.de/webhp?q=bonjour%20delphi

frankyboy1974 9. Feb 2016 09:52

AW: instanz des eigenen Programms im Netzwerk finden?
 
https://de.wikipedia.org/wiki/Broadcast

Sir Rufo 9. Feb 2016 09:53

AW: instanz des eigenen Programms im Netzwerk finden?
 
Ja, mit einem UDP-Broadcast, den die Anwendung selber immer wieder versendet mit der Information "Was bin ich" (Service-Typ), "Wo bin ich" (IP + Port).

Also nicht suchen, sondern darauf lauschen, wer "Hier bin ich" schreit :stupid:

himitsu 9. Feb 2016 09:55

AW: instanz des eigenen Programms im Netzwerk finden?
 
Grundsätzlich gibt es mehrere Möglichkeiten:
  • ein https://de.wikipedia.org/wiki/Broadcast
  • eine zentrale Stelle, die das Ziel kennt
    • einer der Beiden ist immer an der selben Stelle erreichbar
    • eine dritte Stelle (Server oder Datei) kennt das/die Ziel(e), da sich die Programme dort eintragen/anmelden ... z.B. ala DynDNS
  • alle IPs des Subnetztes durchprobieren (hoffentlich ist der Port wenigstens fest)
  • die Komunikation läuft immer über einen externen/zentralen Server (Teamviewer, ICQ, MSN usw.)

geskill 9. Feb 2016 10:07

AW: instanz des eigenen Programms im Netzwerk finden?
 
Der Oberbegriff dazu ist Zero Configuration Networking. Der englische Artikel dazu ist noch besser. Das Bonjour Protokoll von Apple ist eine Möglichkeit dies zu realisieren. Es ist auch immer die Frage der Portabilität. Soll es nur auf Windows funktionieren oder auch auf Mac. Was passiert mit der Firewall, müssen Ports explizit geöffnet werden?

Du kannst z.B. mit Pipes arbeiten. Komponente. Beispiel findest du hier: http://stackoverflow.com/a/512796
Alternative Implementierung in einer Komponente (eleganter): http://www.cromis.net/blog/downloads/cromis-ipc/

Marco Steinebach 9. Feb 2016 12:58

AW: instanz des eigenen Programms im Netzwerk finden?
 
Hallo zusammen,
zunächsteinmal ganz, ganz herzlichen Dank für die Antworten - das Wetter ist so schäußlich, da kann man 'ne Menge lesen... ;-)
Ich denke, ich werde das Ganze mit UDP-Broadcasts realisieren.
Dazu noch eine Frage: bisher habe ich die Nachrichten via TCP gesendet - spricht etwas dagegen, die via UDP zu senden, dann brauche ich nicht jeweils einen Server und Client fü TCP und UDP?
Viele Grüße
Marco

frankyboy1974 9. Feb 2016 13:03

AW: instanz des eigenen Programms im Netzwerk finden?
 
hallo,

UDP gewährleistet nicht, dass die Nachricht auf der anderen Seite auch ankommt. Also die eigentliche Kommunikation würde ich weiterhin über TCP abwickeln.

mfg

Photoner 9. Feb 2016 13:04

AW: instanz des eigenen Programms im Netzwerk finden?
 
Zitat:

Zitat von Marco Steinebach (Beitrag 1329871)
Dazu noch eine Frage: bisher habe ich die Nachrichten via TCP gesendet - spricht etwas dagegen, die via UDP zu senden, dann brauche ich nicht jeweils einen Server und Client fü TCP und UDP?

Das kommt nur drarauf an ob die Datenübertragung sicher sein muss (sicher in dem Sinne dass alle Pakete ankommen).

Klaus01 9. Feb 2016 13:09

AW: instanz des eigenen Programms im Netzwerk finden?
 
.. wie verhält es sich denn mit Zero Configuration Networking und der Windows Firewall.
Die blockiert sowas doch in der Regel und muss dann vom Anwender freigeschaltet werden.
Oder irre ich micht hier?

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.
Seite 1 von 3  1 23      

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