Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Netzwerk scannen (https://www.delphipraxis.net/129387-netzwerk-scannen.html)

Schwedenbitter 18. Feb 2009 08:24


Netzwerk scannen
 
Hallo,

bitte nicht gleich hauen. Ich weiß, dass es zu diesem Thema eine Menge Infos gibt. Ich habe auch die Artikel hier im Forum aufmerksam verfolgt. Allerdings haben die meine Frage nicht beantworten und mich auch nicht weiter bringen können.

Ich habe hier einen Server, auf dem http, php etc. angeboten wird und viele Rechner, die das nutzen (sollen). Mein Ziel ist ein Setup-Programm, das mir Links im Startmenü zu allen Möglichen Seiten legt; z.B. //IP-Adresse/Programm/index.php. Ich kann Links anlegen und ich kann Dank der Anleitung von Manfred Ruzicka auch die Rechner ermitteln.
Ich habe nur ein Problem: Ich brauche die IP-Adressen. In vielen Teilen meiner php-Programme habe ich die IP des Servers verwendet. Das jetzt auf den Namen umzustellen wäre viel zu aufwendig.

Ich suche also entweder eine Möglichkeit, gleich statt der Namen die IPs zu bekommen oder die IP hinter dem Namen zu ermitteln. Das Scannen des gesamten IP-Bereichs dauert mir auch mit Thread deutlich zu lange.

Ich bin für Ideen dankbar.

Alex

nuclearping 18. Feb 2009 08:28

Re: Netzwerk scannen
 
Gibt doch Nameserver für sowas?

nahpets 18. Feb 2009 08:42

Re: Netzwerk scannen
 
Hallo,

die Lösung Deines Problemes ist relativ einfach:

Du benötigst die Indy-Komponente TIdIcmpClient.
Deren Attribut Host weist Du den Rechnernamen zu und führst ein Ping aus.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdIcmpClient.Host := 'Rechnername';
  IdIcmpClient.Ping;
end;
Dem Ereignis OnReply der Komponente weist Du eine Methode zu, in der Du die IP-Adresse abholen kannst.
Delphi-Quellcode:
procedure TForm1.IdIcmpClientReply(ASender: TComponent; const AReplyStatus: TReplyStatus);
begin
  ShowMessage(AReplyStatus.FromIpAddress);
end;

Schwedenbitter 18. Feb 2009 13:25

Re: Netzwerk scannen
 
Zitat:

Zitat von nahpets
... Du benötigst die Indy-Komponente TIdIcmpClient.

Danke für die schnelle Antwort. Leider kann ich diese Komponente nirgends finden. Ich benutze TurboDelphi 2006. Ich meine zwar, irgendwann während der Installation etwas von den Indy-Komponenten gelesen zu haben (Abfage ob Version 9 oder 10 installiert werden soll - kann das stimmen?). Im Inspektor finde ich sie aber nicht und zusätzliche Komponenten darf man lt. Linzenz nicht installieren. In allergrößter Not müsste ich mein Delphi 6 aus Studienzeiten wiederbeleben. Das ist aber 12 Jahre alt. Ich bin mir nicht sicher, ob dort die Indy-Komponente dabei war, aber evtl. kann man das irgendwo runterladen.

Gibt es eine Alternative?

Alex

nuclearping 18. Feb 2009 13:53

Re: Netzwerk scannen
 
Indy10 funktioniert in Delphi 6. Hab das hier auch noch am laufen. Wie's mit Turbo Delphi ausschaut, kA. Benutz ich nicht.

p80286 18. Feb 2009 14:01

Re: Netzwerk scannen
 
Hallo Schwedenbitter,

die TurboDelphi2006 (prof) hab ich auch und da ist die Komponente unter den Indy-Clients zu finden.
Da der Unterschied zwischen der "normalen" Turbo-Version und der Prof. nur ein anderer Product key war, vermute ich das sie auch bei Dir zu finden sein müßten.

Gruß K-H

Luckie 18. Feb 2009 14:02

Re: Netzwerk scannen
 
Zitat:

Zitat von Schwedenbitter
und zusätzliche Komponenten darf man lt. Linzenz nicht installieren.

Siehe hier: http://www.delphipraxis.net/internal...=606935#606935

Schwedenbitter 6. Aug 2009 20:20

Re: Netzwerk scannen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Luckie
Zitat:

Zitat von Schwedenbitter
und zusätzliche Komponenten darf man lt. Linzenz nicht installieren.

Siehe hier: http://www.delphipraxis.net/internal...=606935#606935

Und genau deshalb habe ich mich mal rangemacht das auch ohne hinzubekommen. Ich kenne das von Lazarus. Für den Fall, dass jemand dasselbe oder ein ähnliches Problem hat, habe ich mal den Code unten rangehängt.

Jetzt habe ich "nur noch" ein Problem: Wie packe ich das in eine Function? Ich benötige ja für alle Namen im Netz die dahinter stehende IP-Adresse. Im Grunde müsste ich dann einen anpingen, warten ob und was zurück kommt und dann den nächsten usw. Nur wie komme ich von dem Ereignis in meine Function.

Gruß und Dank, Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.

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