Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Über IP den Hostname ermitteln (https://www.delphipraxis.net/54482-ueber-ip-den-hostname-ermitteln.html)

Jelly 5. Okt 2005 09:14


Über IP den Hostname ermitteln
 
Ich muss über eine beliebige Internet IP Adresse dessen Hostname ermitteln. Irgendwie blick ich da nicht durch. Indy (v.10) sollte doch sowas können, aber ich hab keine Ahnung welche Componente ich dafür ranziehen muss.

Ist bestimmt ganz einfach :-)

jensw_2000 5. Okt 2005 09:48

Re: Über IP den Hostname ermitteln
 
Das geht über DNS Reverse Lookup.

Schau dir mal die Indy Beispiele an. Wenn ich mich recht erinnere gab es bei der 7er Version ein Beispiel dazu. Eventuell ist bei der 10er Version auch was dabei.

Alternativ kann ich heute Abend aus meinen Sourcen was für dich raussuchen ...
Ich verwende die V.7x Indys....


Schöne Grüße,
Jens
:hi:


[edit]
Alternativ könntest du ja schon mal schauen, ob dir die Infos , die dir DNS Reverse-Lookup liefert überhaupt ausreichen ...
Hier ein kleines Tool dazu ..
Die Kommandozeile tuts natürlich auch :mrgreen: (nslookup 212.68.72.92).

[/edit]

Jelly 5. Okt 2005 09:59

Re: Über IP den Hostname ermitteln
 
Zitat:

Zitat von jensw_2000
Schau dir mal die Indy Beispiele an. Wenn ich mich recht erinnere gab es bei der 7er Version ein Beispiel dazu. Eventuell ist bei der 10er Version auch was dabei.

Mir fehlen diese ganzen Beispielanwendungen unter Indy 10. Hätte wirklich bei Indy 8 oder 9 bleiben sollen. Hat mir bis jetzt nur Ärger eingebracht.

shmia 5. Okt 2005 10:31

Re: Über IP den Hostname ermitteln
 
Man kann auch direkt mit Winsock arbeiten.
Delphi-Quellcode:
unit WinSockTools;

interface

function ResolveIP(const ipadrstr:string):string;


procedure RaiseSocketError(const UserMsg:string);


implementation

uses WinSock, SysUtils;

function ResolveIP(const ipadrstr:string):string;
var
  InetAddr: u_long;
  HostEntPtr: PHostEnt;
  HostEnt: THostEnt;
  len, struct: Integer;
  i: Integer;
begin
  if ipadrstr = '255.255.255.255' then
  begin
      Result := 'broadcast';
      Exit;
  end;


    // Convert textual IP address to binary format
    InetAddr := inet_addr( PChar(ipadrstr) );
    if InetAddr = SOCKET_ERROR then
      raise Exception.Create( 'Invalid address entered' );
    len := 4;

    // Get hist entry by IP
    HostEntPtr := GetHostByAddr( @InetAddr, len, AF_INET );
    if HostEntPtr = NIL then
       RaiseSocketError('GetHostByAddr');

    // Insert hostname into list
    Result := String( HostEntPtr^.h_name );
end;


procedure RaiseSocketError(const UserMsg:string);
begin
   raise Exception.Create('WinSSock error:'#13#10+UserMsg+#13#10+
      SysErrorMessage(WSAGetLastError()));
end;


end.

Jelly 5. Okt 2005 11:20

Re: Über IP den Hostname ermitteln
 
Danke shmia,

dein Code klappt einwandfrei. :thumb:

Daniel G 6. Okt 2005 00:09

Re: Über IP den Hostname ermitteln
 
Bei mir funktioniert der Code leider nicht, egal, welche IP ich eingebe:

Zitat:

---------------------------
Project2
---------------------------
WinSSock error:

GetHostByAddr

Die Anwendung hat die Funktion WSAStartup nicht aufgerufen, oder bei dieser Funktion ist ein Fehler aufgetreten.
---------------------------
OK
---------------------------
Hat jemand eine Ahnung, woran das liegen könnte?

Ich arbeite mit Windows XP Home und SP2

Luckie 6. Okt 2005 00:15

Re: Über IP den Hostname ermitteln
 
Zitat:

Zitat von Daniel G
B
Hat jemand eine Ahnung, woran das liegen könnte?

Steht doch in der Fehlermeldung: Er hat vergessen MSDN-Library durchsuchenWSAStartup aufzurufen:
Zitat:

The WSAStartup function initiates use of WS2_32.DLL by a process.
Und entsprechend fehlt auch MSDN-Library durchsuchenWSACleanup.

Daniel G 6. Okt 2005 00:18

Re: Über IP den Hostname ermitteln
 
Ähä...

Mönsch, hätt' ich ja von selbst drauf kommen können. Kümmer' ich mich aber erst im Laufe des Tages drum.

Vielen Dank :thumb:


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