Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Computername aus NetzwerkIP ermitteln (https://www.delphipraxis.net/27714-computername-aus-netzwerkip-ermitteln.html)

dopeline 14. Aug 2004 14:13


Computername aus NetzwerkIP ermitteln
 
Hallo!

Ich habe eine IP eines Netzwerkrechners. Nun möchte ich die dahinterstehenden Computernamen ermitteln. Auf der Suche im Forum habe ich nur Anleitungen gefunden alle Netzwerkcomputer aufzulisten. Ich dachte mir das so:

Delphi-Quellcode:
function GetComputerName(ip:String):String;
begin
 ...
end;

// und am besten auch gleich noch umgekehrt:

function GetIP(ComputerName:String):String;
begin
 ...
end;
Wie macht man das?


Gruß, dopeline

Duffy 14. Aug 2004 14:38

Re: Computername aus NetzwerkIP ermitteln
 
Hallo dopeline,
Funktion 1:
Delphi-Quellcode:
function GetComputerNane(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;
end;
Funktion 2:
Delphi-Quellcode:
function GetIp(ComputerName: string): string;
var
  TMPResult: string;
  WSA: TWSAData;
  H: PHostEnt;
  P: PChar;
begin
  if WSAStartUp($101, WSA) = 0 then
  begin
    GetMem(P, 255 + 1);
    StrPCopy(P, ComputerName);
    H := GetHostByName(P);
    FreeMem(P);
    if H <> nil then
    begin
      P := inet_ntoa(PInAddr(H^.h_addr_list^)^);
      TMPResult := StrPas(P);
    end;
    WSACleanUp;
    if TMPResult <> '' then
      Result := TMPResult;
    else
      Result := '0';
    end;
  end;
end;
und nicht vergessen die Unit Winsock einzubinden ...

bye
Claus

dopeline 14. Aug 2004 16:19

Re: Computername aus NetzwerkIP ermitteln
 
Vielen Dank Duffy!!!

Genau das habe ich gesucht! :cheers:



Gruß, dopeline

zecke 17. Jul 2005 17:25

Re: Computername aus NetzwerkIP ermitteln
 
:hi:

Hier stehen ja schöne Beispiele, nur geht das auch umgekehrt? Also die IP mittels des Computernamen bekommen?

edit: habe diesen thread doch noch gefunden, aber erreiche ich mit Duffy Beitrag genau das? (habe kA) der sried

Olli 17. Jul 2005 17:30

Re: Computername aus NetzwerkIP ermitteln
 
Beide Wege sind nicht eineindeutig. Aber ja, auch das geht. Schau dich einfach bei den Funktionen um, die oben auch verwendet wurden. gethostbyaddr() hat nämlich ein Geschwisterchen: gethostbyname().

xZise 3. Sep 2007 13:47

Re: Computername aus NetzwerkIP ermitteln
 
Hi DP,

Wie kann es sein, dass ich eine Ungültige IP bekomme?

Wenn ich zum Beispiel ein Netzwerk mit den Computernamen R50-03 und der 4. IP-Stelle von 191, dass ich dann 192.168.1.176 bekomme?
Eine Ping anforderung von einen aderen PC auf die ermittelte Adresse gibt nur Zeitüberschreitungen an. Und ein Ping an den Computernamen auch (es wird die fehlerhafte IP aufgelöst), aber an die über "ipconfig" ermittelte IP korrekt weitergeleitet wird?

Muss man da irgendwas im Netzwerk ändern?

MfG
xZise

PS: Ich weiß, der Thread ist alt, aber warum darf ich nicht hier antworten?

Christian Seehase 3. Sep 2007 13:58

Re: Computername aus NetzwerkIP ermitteln
 
Moin Fabian,

Zitat:

Zitat von xZise
Wie kann es sein, dass ich eine Ungültige IP bekomme?

es wird nicht jedesmal, wenn Du einen Rechner mit Namen ansprichst eine DNS-Anfrage generiert, sondern erst einmal geprüft, ob denn der Name nicht schon im lokalen DNS-Cache steht.
Das könntest Du schon mal umgehen, indem Du mittels IPCONFIG /flushdns den Cache leerst, und somit eine Abfrage erzwingst.

Dann könntest Du noch ein Problem mit den DNS-Suffixes haben, evtl. eine falsche Reihenfolge, die dann zu einer falschen Auflösung führt.

Es könnte auch sein, dass der Rechner, warum auch immer, in der HOSTS (zu finden in C:\WINDOWS\system32\drivers\etc) eingetragen ist, und die, falsche, IP-Adresse von dort gezogen wird.

Was auch vorkommen kann:
Doppelte Rechnernamen im Netz.
Dann kann das auch schiefgehen.

Das nur mal so, was mir auf Anhieb zu Deiner Frage einfällt.

susann 11. Sep 2007 19:50

Re: Computername aus NetzwerkIP ermitteln
 
Hallo ich hab mal ne Frage,ich würde gerne, das meine IP Adresse nicht überall angezeigt wird, was kann ich da tun?Ich muss sagen, das ich eigentlich keine Ahnung von der Programmiersprache hab, sorry.Gibt es trotsdem jemand, der mir das erklären würde?Dank Euch!Susann :lol:

s-off 11. Sep 2007 19:54

Re: Computername aus NetzwerkIP ermitteln
 
Hallo susann,

für Deine Frage solltest Du einen separaten Beitrag eröffnen, wenn Du wirklich Antworten bekommen möchtest :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 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