Entwickler-Ecke
Internet / Netzwerk - Rechnername durch IP-Adresse
Wapi - Mo 27.01.03 12:21
Titel: Rechnername durch IP-Adresse
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 - Mo 27.01.03 14:44
keine ahnung obs klappt aber ich habs aus dem Internet:
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; |
hitstec - 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 - Mo 27.01.03 20:52
Probier´s mal mit der Indy-Komponente IP-Watch. Geht aber soweit ich weiß nur im Lan.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!