Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

himitsu 9. Feb 2016 13:36

AW: instanz des eigenen Programms im Netzwerk finden?
 
SICHER

Wenn UDP nicht für den sicheren Empfang sorgt, so kann man das natürlich auch in der nächsten OSI-Schicht nachholen, also im eigenen Protokoll eine Empfangsbestätigung, mit Rückmeldung und eventueller Neuanforderung.

Marco Steinebach 9. Feb 2016 15:24

AW: instanz des eigenen Programms im Netzwerk finden?
 
Hallo,
Joa, die Firewall schlägt zu, aber den Click kann man dem Anwender schon zumuten, denke ich.
Nun, ich brauche ja UDP nur für das Finden der zweiten Instanz im Netzwerk, den Rest lasse ich dann schön brav bei TCP. Dann kann ich auch, ohne weitere Programmierung, gleich darauf hinweisen, wenn's die Verbindung mal verreist...

Herzlichen Dank und viele Grüße
Marco

HolgerX 9. Feb 2016 16:00

AW: instanz des eigenen Programms im Netzwerk finden?
 
Hmm..

Noch ein kleiner Hinweis zu Broadcasts:
Diverse Router unterbinden Broadcasts in Ihrem Netz! Somit kann es sein, dass dein 'Hallo' ungehört im Kundennetzwerk verstummt.. ;)

Eine Server-Applikation, welche als zentrale Anlaufstelle dient hat hier den Vorteil ohne Broadcasts zu funktionieren..

Marco Steinebach 9. Feb 2016 16:44

AW: instanz des eigenen Programms im Netzwerk finden?
 
Hallo,
blöööd, es wäre so schön gewesen, na ja, für den Anwendungsfall wird's ohne Server gehen, ich will, hier, nur, daß beide Instanzen die gleiche Datei laden, wenn man bei der einen den entsprechenden Menüpunkt auswählt - aber dafür muß die zweite Instanz eben erstmal gefunden werden. ;-)
Eine Frage hab ich doch noch: meine Broadcast-Nachricht kommt bei der zweiten Instanz, auf der der UDPServer läuft an, und zwar, logischerweise, im UDPRead-Event. Wie kriege ich die Ip des Clients raus, von dem der Broadcast kam? Mit
aBinding.ip
jedenfalls mal nicht. :-(
Herzliche grüße
Marco

Mavarik 9. Feb 2016 16:51

AW: instanz des eigenen Programms im Netzwerk finden?
 
Nimm doch einfach AppTethering...

Da geht das alles fast wie von selbst...


Oh Delphi 5 - Sorry hab nix gesagt...

frankyboy1974 9. Feb 2016 19:04

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

Zitat:

Wie kriege ich die Ip des Clients raus, von dem der Broadcast kam? Mit
aBinding.ip
jedenfalls mal nicht.
Notfalls gibt der Sender seine IP-Adresse in der Nachricht mit.

mfg

Luckie 9. Feb 2016 19:56

AW: instanz des eigenen Programms im Netzwerk finden?
 
Wie so notfalls? Das Mitsenden wäre das einfachste.

Marco Steinebach 11. Feb 2016 11:41

AW: instanz des eigenen Programms im Netzwerk finden?
 
Hallo zusammen,
meine Güte, manchmal kommt man auf's einfachste nicht...
Alles schön!
Viele Grüße
Marco

TERWI 11. Feb 2016 14:42

AW: instanz des eigenen Programms im Netzwerk finden?
 
Ich beschäftige mich u. a. derzeit mit diesen netten Geschichte WebServices-Discovery.
Damit frage ich hier z.B. meine IP-Kameras im Netz gelegentlich mal ab.

WS-Disc. klingt/sieht vielleicht ein bischen schwierig aus - ist es aber nicht.
Im Prinzip geht das wie folgt:
Es gibt einen "Master", der viele Clienten haben kann, die er suchen kann, die sich aber auch bei ihm melden können.
Dafür gibts grundsätzlich 3 Funktionen:
- HELLO: schickt der Client, wenn er sich beim Master anmelden will.
- BYE: sendet der Client, wenn er sich verabschiedet / das Programm beendet wird / der Rechner runterfährt.
- PROBE schicht der Master in LAN - jeder Client muss mit einer PROBEMATCH antworten.

Das läuft offiziell alles via UDP mit Multicast (nur der Probematch nicht)
MC-IP ist 239.255.255.250 immer an den Port 3702 für Hello, Bye und Probe.
PROBEMATCHes gehen direkt an die IP des Servers.

Jede Message ist XML-gefüttert und führt immer (mindstens) die IP, den Port und den Typ des angefragten Clienten / des Absenders mit, bei einer PROBEMATCH-Anwort kann man bei Bedarf noch ne Menge mehr mit reinpacken wie "wer bin ich genau, was kann ich, was mach ich grade, ..."

WS-Discovery ist da relativ flexibel, und wird z.B. auch von div Netzwerkgeräten wie Druckern oder hier eben die IP-Kameras unterstützt.


Ich bastle aktuell an einer Klasse, die recht universell bei Master oder Client eingebunden werden kann/soll. Z.Zt. leider noch ein paar elementare Probs ...
Es wird eine Liste mitgeschrieben, wo alle bisher bekannten Klienten (oder auch Server) mit IP, Port, Typ, An-/Abmelde-Zeit, Status, usw. mitgeführt wird.
Damit könnte man z.B. sogar kontrollieren, wer ein/das Programm oder sonstwas wie oft und lange benutzt, ob der CLient auch wirlich "arbeitet" oder das Proggie "herum-iddled".

.... das könnte doch was für dich sein - oder ?

Marco Steinebach 23. Feb 2016 15:37

AW: instanz des eigenen Programms im Netzwerk finden?
 
Hallo nochmal,
... den WS-Disc schau ich mir auf jedenfall an, das klingt wirklich interessant.

Noch 'ne Frage - bitte:
im Moment finde ich meine zweite Programm-Instanz schlicht dadurch, daß ich mich mit allen IP-s von ...1 bis ...255 verbinde. Kriege ich ein connect hin, frage ich nach, ob hier auch mein Programm läuft.
Das funktioniert wunderbar, dauert aber ewig - logischerweise, dabei habe ich die connectTimeOut schon auf 150 runtergesetzt.
Geht das nicht irgendwie schneller?
Ping taugt nicht recht, weil man dafür zwingend Admin-Rechte braucht, UDP habe ich verworfen...
Hat jemand noch 'ne Idee, damit ich für den Verbindungsaufbau nicht im dümmsten fall 254*150 MS warten muß?
Herzliche Grüße
Marco


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.
Seite 2 von 3     12 3      

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