Autor |
Beitrag |
Nano-Ware
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Di 01.05.12 15:59
Hey,
ich möchte gerne alle aktive (derzeit mit dem Netzwerk verbundenen) Geräte anzeigen. Dabei reicht die interne IP vollkommen aus. Kann ich diese PC dann eigentlich über die Indy TCP Komponente dann auch direkt über die interne IP ansprechen?
Danke für eure Antworten!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 01.05.12 22:19
Moin!
Nano-Ware hat folgendes geschrieben : | ich möchte gerne alle aktive (derzeit mit dem Netzwerk verbundenen) Geräte anzeigen. |
Vorab: es gibt für dieses "Problem" keine einfache Lösung, jedenfalls sicher nichts, was du dir darunter vorstellen würdest (z.B. eine Funktion die man aufruft und schwupps alls PCs in eine Liste schreibt oder sowas).  Ja, ich weiß, hört man nicht gerne, und es gibt sicher immer wieder Leute, die sagen, das stimme nicht, aber bei Licht betrachtet sind deren "Lösungen" dann auch nur immer wieder irgend eine beliebig genaue Näherung, aber keine Lösung.
Du kannst z.B. alle IPs des Subnets anpingen, kriegst du eine Antwort, weißt du, dass unter dieser Adresse ein aktiver IP-Stack erreichbar ist (was aber nicht ausschließt, dass es Geräte gibt, die auch aktiv sind, aber nicht auf einen Ping antworten). Dann hast du aber auch Printerserver, Router, etc.pp. "gefunden".
Nano-Ware hat folgendes geschrieben : | Dabei reicht die interne IP vollkommen aus. Kann ich diese PC dann eigentlich über die Indy TCP Komponente dann auch direkt über die interne IP ansprechen? |
Du möchtest doch sicher eher aktive Programminstanzen deiner Anwendung im LAN suchen, oder?  Dann bietet sich ein UDP-Broadcast an. Eine aktive Programminstanz kann dann darauf antworten und du kannst sicher sein, dass da ein geeigneter "Gesprächsparter" auf der anderen Seite ist.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: jaenicke
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Di 01.05.12 22:38
Ja, ich werde das dann wohl per TCP machen. Nur wie geh ich de einzelnen IPs durch, dass ich sicher bin, dass ich auch überall geschaut habe?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 01.05.12 23:13
Moin!
Nano-Ware hat folgendes geschrieben : | Ja, ich werde das dann wohl per TCP machen. |
Vorsicht Falle: ich sprach von einem UDP-Broadcast, nicht TCP!
Nano-Ware hat folgendes geschrieben : | Nur wie geh ich de einzelnen IPs durch, dass ich sicher bin, dass ich auch überall geschaut habe? |
Was jetzt, Ping oder UDP-Paket?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 02.05.12 09:00
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Do 03.05.12 19:53
Das LuckiePing Programm verstehe ich nicht. Sagt mir einfach, wie ich das machen soll ich versteh nur Bahnhof. Ich möchte einfach alles aktiven PCs anzeigen lassen, auf denen meine Software läuft. Das wird doch irgendwie möglich sein oder?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 03.05.12 21:51
Das hat Narses ja schon geschrieben... Wenn du nicht weißt was UDP oder ein Broadcast ist, dann wirst du das wohl nachlesen müssen. Es macht wenig Sinn, wenn wir hier die Inhalte aus Wikipedia oder ähnlichen Seiten für dich reinkopieren...
de.wikipedia.org/wik...er_Datagram_Protocol
de.wikipedia.org/wiki/Broadcast
Wenn du dir das angeschaut hast, dann weißt du wie es prinzipiell funktioniert. In Delphi erstellst du dann einen UDP-Server, z.B. TIdUDPServer, lauschst auf einem gewählten Port auf Daten aus dem Netzwerk, indem du OnUDPRead als Event benutzt und schickst mit der Methode Broadcast die Daten an alle anderen im Netzwerk. Soweit zur Kurzfassung...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 03.05.12 22:36
Moin!
Nano-Ware hat folgendes geschrieben : | Sagt mir einfach, wie ich das machen soll |
Vielleicht hilft das ja weiter.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: jaenicke
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 04.05.12 13:47
Nano-Ware hat folgendes geschrieben : | Das LuckiePing Programm verstehe ich nicht. Sagt mir einfach, wie ich das machen soll ich versteh nur Bahnhof. |
Ich glaube kaum, daß sich dafür jemand hergeben wird. Luckie legte seinem Programm - wie fast überall - die Quelltexte bei. Frag' doch erst einmal seine Quelltexte. Auch ich hatte schon Programme nachzuvollziehen versucht, bei denen ich die Quelltexte Schritt für Schritt abarbeiten konnte - es gelang mir trotzdem nicht. Wenn Du Dich erkennbar bemühst, was man dann auch an Deinen Fragen wahrnehmen kann, weil die dann spezieller bzw. konkreter sind, wird man Dir sicher zu helfen sich bemühen. Aber lediglich in Deinem "Bahnhof" die Züge zu rangieren, ist keine konkrete Fragestellung. Dir wird nichts anderes übrigbleiben, als mit viel Fleiß Dich in etwas hineinzuarbeiten, wenn Du etwas programmieren möchtest, was wirklich Deine Arbeit ist.
Asche auf's Haupt: Natürlich übernahm auch ich schon Algorithmen und Quelltexte, die ich nicht verstand. Diese zur Zufriedenheit in seine Programme zu integrieren, ist dann aber reine Glückssache.
Nano-Ware hat folgendes geschrieben : | Ich möchte einfach alles aktiven PCs anzeigen lassen, auf denen meine Software läuft. Das wird doch irgendwie möglich sein oder? |
Auf denen Deine Software läuft? Das ist ja noch einen Anspruch höher. Vielleicht kann man ja den Prozeßschnappschuß auch auf Ferncomputern ("remote") ausführen (lassen), aber ob das möglich ist, ist mir unbekannt. Aber der ist auch ganz leicht auszutricksen: Man muß nur den Namen der startenden Exe-Dateien verändern, und schon ist Deine Software mit ihm nicht mehr zu finden. Ergänzung: Vielleicht kann man das verhindern, indem die Software ihren eigenen (Exe-Datei-)Namen beim Start prüft und ggf. abbricht.
Zuletzt bearbeitet von Delphi-Laie am Fr 04.05.12 21:51, insgesamt 2-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 04.05.12 13:54
Delphi-Laie hat folgendes geschrieben : | Auf denen Deine Software läuft? Das ist ja noch einen Anspruch höher. Vielleicht kann man ja den Prozeßschnappschuß auch auf Ferncomputern ("remote") ausführen (lassen), aber ob das möglich ist, ist mir unbekannt. |
Wenn man mit UDP-Broadcasts arbeitet wie vorgeschlagen, ist das gar nicht notwendig, und die Funktionalität an sich ist auf diesem Weg auch relativ einfach umsetzbar.
Für diesen Beitrag haben gedankt: Narses
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 04.05.12 20:21
Nano-Ware hat folgendes geschrieben : | auf denen meine Software läuft. Das wird doch irgendwie möglich sein oder? |
Na die entscheidende Information kommt ja früh.  Dann ist mein Programm natürlich keine Lösung.
|
|
|