Autor Beitrag
Wapi
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 27.01.03 12:21 
Moin, moin,

ein Bekannter von mir sucht eine Funktion,mit der wir unter Delphi aus einer IP-Adresse aus dem weltweiten Internetraum den Rechnernamen ermitteln können.

Irgendwie haben wir Tomaten auf den Augen.

Wonach sollten wir suchen oder hat jemand eine solche Funtion für uns?


Grüße
Christian
waldmeister
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 136

Win XP
D7 Enterp
BeitragVerfasst: Mo 27.01.03 14:44 
keine ahnung obs klappt aber ich habs aus dem Internet:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
uses 
  WinSock; 

function LocalIP: string; 
type 
  TaPInAddr = array[0..10] of PInAddr; 
  PaPInAddr = ^TaPInAddr; 
var 
  phe: PHostEnt; 
  pptr: PaPInAddr; 
  Buffer: array[0..63] of Char; 
  I: Integer; 
  GInitData: TWSAData; 
begin 
  WSAStartup($101, GInitData); 
  Result := ''; 
  GetHostName(Buffer, SizeOf(Buffer)); 
  phe := GetHostByName(buffer); 
  if phe = nil then Exit; 
  pPtr := PaPInAddr(phe^.h_addr_list); 
  I := 0; 
  while pPtr^[I] <> nil do 
  begin 
    Result := inet_ntoa(pptr^[I]^); 
    Inc(I); 
  end; 
  WSACleanup; 
end; 

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; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ShowMessage(IPAddrToName(LocalIp)); 
end; 

{**************************************} 

// Function to get the IP Address from a Host 

function GetIPFromHost(const HostName: string): string; 
type 
  TaPInAddr = array[0..10] of PInAddr; 
  PaPInAddr = ^TaPInAddr; 
var 
  phe: PHostEnt; 
  pptr: PaPInAddr; 
  i: Integer; 
  GInitData: TWSAData; 
begin 
  WSAStartup($101, GInitData); 
  Result := ''; 
  phe := GetHostByName(PChar(HostName)); 
  if phe = nil then Exit; 
  pPtr := PaPInAddr(phe^.h_addr_list); 
  i := 0; 
  while pPtr^[i] <> nil do 
  begin 
    Result := inet_ntoa(pptr^[i]^); 
    Inc(i); 
  end; 
  WSACleanup; 
end;

_________________
der wald....der meister....der meister des waldes....der waldmeister
hitstec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Mo 27.01.03 15:54 
@waldmeister: Das gilt nur fürs lokale Netz.

@Wapi: Du meinst sicher die DNS-Resolution und nicht den Rechnernamen, oder?
chr_engelmann2001
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 27.01.03 20:52 
Probier´s mal mit der Indy-Komponente IP-Watch. Geht aber soweit ich weiß nur im Lan.