Autor |
Beitrag |
W4yne
      
Beiträge: 50
|
Verfasst: Di 05.01.10 17:54
Wie kann man mit Delphi aus der IP den Hostnamen ermitteln?
mfg W4yne
|
|
Muck
      
Beiträge: 98
Erhaltene Danke: 8
Win 8, Win 7, Vista, Win XP
Delphi XE3, Delphi 2009, Delphi 2007, Delphi 5
|
Verfasst: 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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
W4yne 
      
Beiträge: 50
|
Verfasst: Mi 06.01.10 21:08
Was muck geschickt hat passt einwandfrei und nein es ist keine bestehende Verbindung.
mfg W4yne
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
ardani
      
Beiträge: 36
Win XP
Delphi 6, C++ (VS Express)
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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.
sry for OT, musste einfach sein^^
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 10.02.10 16:22
Dann lager die Routine in einen Thread aus.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 10.02.10 22:30
|
|