Entwickler-Ecke
Internet / Netzwerk - Hostname aus IP ermitteln
W4yne - Di 05.01.10 17:54
Titel: Hostname aus IP ermitteln
Wie kann man mit Delphi aus der IP den Hostnamen ermitteln?
mfg W4yne
Muck - Di 05.01.10 18:55
Hallo,
ich mache das so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| uses WinSock;
function IPAddrToName(IPAddr: Ansistring): string; var SockAddrIn: TSockAddrIn;HostEnt: PHostEnt;WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar(IPAddr)); HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt <> nil then Result := StrPas(Hostent^.h_name) else Result := ''; end; |
Ciao
Markus
Narses - Di 05.01.10 22:19
Moin!
W4yne hat folgendes geschrieben : |
| Wie kann man mit Delphi aus der IP den Hostnamen ermitteln? |
Geht es um eine bereits bestehende Verbindung oder kriegst du die IP-Adresse als DDN? Normalerweise kann man bei einer bereits bestehenden Verbindung den Hostnamen aus dem Binding bzw. dem Socket-Objekt lesen. :idea:
cu
Narses
W4yne - Mi 06.01.10 21:08
Was muck geschickt hat passt einwandfrei und nein es ist keine bestehende Verbindung.
mfg W4yne
Narses - Do 07.01.10 01:24
Moin!
W4yne hat folgendes geschrieben : |
| Was muck geschickt hat passt einwandfrei |
Naja, bis auf das WSA-Init, sowas gehört nicht in die Funktion rein (kostet nur Ressourcen). Und ein Init (gehört ausgewertet und) möchte auch gerne hinterher wieder aufgeräumt werden. :? Also ganz minimal irgendwie sowas:
Delphi-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:
| uses WinSock;
implementation
var WSAData: TWSAData;
function IPv4ToName(const IPv4ddn: AnsiString): String; var IPv4: in_addr; HostEnt: PHostEnt; begin IPv4.S_addr := inet_addr(PAnsiChar(IPv4ddn)); HostEnt := gethostbyaddr(@IPv4, SizeOf(IPv4), AF_INET); if Assigned(HostEnt) then Result := StrPas(Hostent^.h_name) else Result := ''; end;
initialization WSAStartup($101, WSAData); finalization WSACleanup; |
bitte nicht mit "funktioniert doch" kommen, ein Auto ohne Bremsen funktioniert auch...
cu
Narses
ardani - Mi 10.02.10 11:58
wie kann ich bei dem Beispiel verhindern, das der Rechner während des Ausführens "hängen" bleibt, mit Application.ProcessMessages;
Ich möchte erreichen, dass mein Programm den Teil ausführt, dabei aber wartet bis dieser abgeschlossen ist, da ich eine "Uhr" und einen Fortschrittsbalken anzeigen lasse, würde ich die Hostabfrage gerne "auslagern", damit die beiden Darstellungen, weiterhin Flüssig und Korrekt stattfinden.
elundril - Mi 10.02.10 12:57
Narses hat folgendes geschrieben : |
Moin!
bitte nicht mit "funktioniert doch" kommen, ein Auto ohne Bremsen funktioniert auch...
|
wie man bei Toyota sehr gut sehen kann. :mrgreen:
sry for OT, musste einfach sein^^
Delete - Mi 10.02.10 16:22
Dann lager die Routine in einen Thread aus.
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!