AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke instanz des eigenen Programms im Netzwerk finden?
Thema durchsuchen
Ansicht
Themen-Optionen

instanz des eigenen Programms im Netzwerk finden?

Ein Thema von Marco Steinebach · begonnen am 9. Feb 2016 · letzter Beitrag vom 7. Mär 2016
Antwort Antwort
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#1

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 9. Feb 2016, 19:04
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
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 9. Feb 2016, 19:56
Wie so notfalls? Das Mitsenden wäre das einfachste.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 11. Feb 2016, 11:41
Hallo zusammen,
meine Güte, manchmal kommt man auf's einfachste nicht...
Alles schön!
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 11. Feb 2016, 14:42
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 ?
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#5

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 23. Feb 2016, 15:37
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
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 23. Feb 2016, 17:38
Im dümmsten Fall habe ich kein /24er Netzwerk und du musst >16 Millionen IPs ausprobieren. Es sei denn ich stelle auf IPv6 um.

Es gibt nur einen korrekten Weg dafür, und der wurde dir in #4 beschrieben. UDP Broadcasts sind genau für diesen Zweck gemacht.

Und als Alternative sollte es immer die Möglichkeit geben, eine IP direkt einzugeben. Alles andere ist, mit Verlaub, Mist.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#7

AW: instanz des eigenen Programms im Netzwerk finden?

  Alt 24. Feb 2016, 07:58
Hallo,
okay, also doch UDP, stimmt schon, daß war irgendwie so'ne, .., na-ja-Lösung.

Aber eine Frage:
Bei TCP kann ich folgendes, im Client, tun:
Client.IOHandler.Writeln('Hey Server, was machst du');
messageBox (Client.IOHandler.Readln); // gibt die Antwort vom Server zurück.
Geht sowas auch mit UDP, wenn ja, wie?
Ich dachte, da könnte der Client nur Senden und der Server nur empfangen und es gäbe kein Connect wie bei TCP, jetzt hab ich aber doch eines gefunden????
Hääää?
Kann mir jemand mal bitte helfen meine Vollblockade zu lösen?
Vielen Dank schonmal und vieleGrüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz