Rechnernamen im lokalen Netzwerk

Für Fragen von Einsteigern und Programmieranfängern...
Solino
Beiträge: 11
Registriert: Do 27. Feb 2014, 13:18

Rechnernamen im lokalen Netzwerk

Beitrag von Solino »

Hallo,

gibt es eine einfache Möglichkeit alle Rechnernamen im lokalen Netzwerk abzufragen?

Viele Grüße

solino

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von m.fuchs »

Nein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Solino
Beiträge: 11
Registriert: Do 27. Feb 2014, 13:18

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Solino »

Mit den beiden folgenden Funktionen sollte es klappen:

Alle IP-Adressen auflisten:

Code: Alles auswählen

function GetLocalIPs: string;
var
  TcpSock: TTCPBlockSocket;
  ipList: TStringList;
begin
  Result := '';
  ipList := TStringList.Create;
  try
    TcpSock := TTCPBlockSocket.create;
    try
      TcpSock.ResolveNameToIP(TcpSock.LocalName, ipList);
      Result := ipList.CommaText;
    finally
      TcpSock.Free;
    end;
  finally
    ipList.Free;
  end;
end;     
Quelle: http://synapse.ararat.cz/doku.php/start

Rechnernamen aus IP-Adresse ermitteln:

Code: Alles auswählen

function IPAddrToName(IPAddr: string): string;
var
  SockAddrIn: TSockAddrIn;
  HostEnt: PHostEnt;
  WSAData: TWSAData;
begin
  WSAStartup($101, WSAData);
  SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
  HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    Result := StrPas(Hostent^.h_name)
  else
    Result := '';
end;
 
Quelle: http://www.swissdelphicenter.ch/torry/s ... php?id=170
Zuletzt geändert von Lori am Fr 20. Jun 2014, 15:14, insgesamt 1-mal geändert.
Grund: Highlighter

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von m.fuchs »

Völliger Quatsch.
Solino hat geschrieben:Alle IP-Adressen auflisten:
Das listet dir alle IP-Adressen auf, die das lokale System nutzt. Aber nicht alle IP-Adressen des lokalen Netzwerks.
Solino hat geschrieben:Rechnernamen aus IP-Adresse ermitteln:
Das funktioniert nur unter Windows und liefert dir auch nur ein Ergebnis zurück, wenn der Hostname und IP irgendwo eingetragen sind. Entweder im zuständigen DNS oder in der HOSTS-Datei. Ist das nicht der Fall, bleibt der Name leer.

Hast du deine Tipps vorher ausprobiert oder einfach nur ein wenig gegoogelt und dann etwas halbwegs passendes gepostet?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Christian »

Nein würd ich darauf jetzt auch nicht pauschal antworten. Du könntest ja z.b. das gesamte Subnet mit ARP Anfragen beflacken ;) Ist zwar nicht sicher das mann dann alles findet, aber immerhin mehr als nichts.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von m.fuchs »

Naja, die Frage ist etwas ungenau. Was ist ein Rechnername? Was bedeutet einfach?

Letztendlich können da soviele Faktoren eine Rolle spielen, dass die Frage sich genauso beantworten lässt wie: Ist mein Rechner mit dem Internet verbunden? => http://www.marian-aldenhoevel.de/dojo/internet.html

Wenn der OP das Ganze genauer definiert, könnte man vielleicht auch eine weniger pauschale Antwort geben.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Solino
Beiträge: 11
Registriert: Do 27. Feb 2014, 13:18

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Solino »

Hallo,

Rechnername = das was der Explorer unter "Netzwerk" anzeigt.
Einfach = leicht in eigene Programme zu integrieren.
Ausprobiert = Ja

Ich möchte alle Rechnernamen ermittelt, die mit einem Server verbunden sind.
Mit den dargestellten Funktionen sollte das (mit ein paar Anpassungen!) funktionieren.

Vielleicht hilft´s dem einen oder anderen...

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Scotty »

Und was verstehst du unter "verbunden"? Mit einem Webserver bin ich auch nicht (mehr) verbunden, wenn ich eine HTML Seite lese. Oder suchst du vielleicht nach einem Portscanner? Ansonsten: Kennst du die Clients, sprich: Sind es deine eigenen Programme? Dann gib ihnen doch bei der Anmeldung einfach einen Alias mit. Wenn es nur um Windows-PCs in einem lokalen Netz geht, dann suchst du wahrscheinlich nach NetBIOS. Aber da wissen andere sicher besser Bescheid. :mrgreen:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von m.fuchs »

Solino hat geschrieben:Ich möchte alle Rechnernamen ermittelt, die mit einem Server verbunden sind.
Mit den dargestellten Funktionen sollte das (mit ein paar Anpassungen!) funktionieren.
Kann ich mir nur schwer vorstellen, kannst du das noch weiter ausführen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Christian »

Ausprobiert = Ja
Ich habs gerade ausprobiert und die Funktion liefert nur die Lokalen IPś zurück (wie auch anders).
Aber wenn du uns und dich selbst belügst ist dein Problem ja wohl behoben.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Rechnernamen im lokalen Netzwerk

Beitrag von mschnell »

Solino hat geschrieben:gibt es eine einfache Möglichkeit alle Rechnernamen im lokalen Netzwerk abzufragen?
Nur, wenn alle Rechner DHCP verwenden und außerdem tatsächlich die in DHCP vorgesehene Bekanntgabe des Rechner-Namens verwenden und der DHCP-Server tatsächlich eine Liste Der Rechner-Namen führt (und diese mit an den lokalen Nameserver weitergibt).

Dann kannst Du den DHCP-Server nach Rechnernamen fragen oder Reverse-DNS mit den gefundenen IP-Adressen machen.

Die lokalen (d.h nicht hinter einem Router) IP-Adressen kannst Du theoretisch über ARP-Broadcast/Request finden

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Christian »

Michael, jetzt sagst mir bitte mal die Seite der RFC auf der du findest wie man nen DHCP Server nach den Clients fragt.

https://tools.ietf.org/html/rfc2131
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Rechnernamen im lokalen Netzwerk

Beitrag von mschnell »

Ich hatte gehofft das geht. Ist aber wohl nicht standardisiert :( .
(Natürlich geht es z.B. über proprietäre Wege wie eine Website des Routers, der einen DHCP-Server hat oder eine Datei auf einem Linux-Server.)

Bleibt also ARP und reverse Name Request.

Dank für die Aufklärung.
-Michael

Solino
Beiträge: 11
Registriert: Do 27. Feb 2014, 13:18

Re: Rechnernamen im lokalen Netzwerk

Beitrag von Solino »

Christian hat geschrieben:
Ausprobiert = Ja
Ich habs gerade ausprobiert und die Funktion liefert nur die Lokalen IPś zurück (wie auch anders).
Aber wenn du uns und dich selbst belügst ist dein Problem ja wohl behoben.
In einen Forum für "Einsteigerfragen" hätte ich so "tolle" Antworten wirklich nicht erwartet...

Wo ist denn der Unterschied zwischen "in einem lokalen Netzwerk" und "lokale IPs" ???

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Rechnernamen im lokalen Netzwerk

Beitrag von m.fuchs »

Solino hat geschrieben:
Christian hat geschrieben:Ich habs gerade ausprobiert und die Funktion liefert nur die Lokalen IPś zurück (wie auch anders).
Aber wenn du uns und dich selbst belügst ist dein Problem ja wohl behoben.
In einen Forum für "Einsteigerfragen" hätte ich so "tolle" Antworten wirklich nicht erwartet...
Naja, wenn du verkündest, dass etwas funktioniert, was nicht funktionieren kann. Dann kann es sein, dass andere Teilnehmer danicht in deinem Sinne darauf reagieren.

Bei deiner Fragestellung kommt hinzu: es ist immer noch unklar was du willst. Erst möchtest du alle Rechnernamen in einem Netzwerk haben. Das ist so pauschal gesehen, nicht machbar.
Dann wird es etwas genauer: es geht um SMB-Server und -Clients (zumindest lese ich das aus "das was der Explorer unter "Netzwerk" anzeigt").
Dann die nächste Einschränkung: "alle Rechnernamen ermittelt, die mit einem Server verbunden sind." Das muss ja nicht mehr das ganze Netzwerk sein. Wobei unklar ist, ob dein Programm auf dem Server läufft oder irgendwo anders.
Deswegen gibt es auch immer noch keine konkrete Antwort.
Solino hat geschrieben:Wo ist denn der Unterschied zwischen "in einem lokalen Netzwerk" und "lokale IPs" ???
In einem lokalen Netzwerk kann es mehr als einen Rechner geben. Die lokalen IP-Adressen, sind alle IP-Adressen die EIN Rechner besitzt. Im Falle deines Quellcodes nämlich der, auf dem das ganze ausgeführt wird.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten