Entwickler-Ecke
Internet / Netzwerk - hostnamen über ipadresse
Harry M. - Mi 02.02.05 20:32
Titel: hostnamen über ipadresse
wie bekomme ich von der ip-adresse den hostnamen (provider-name oder
http://www.blabal.de)
gruß
MSCH - Mi 02.02.05 20:49
per dns??
**grins**
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var S:String; HostEnt : PHostEnt; WSAData : TWSAData; SockAddrIn: TSockAddrIn; DNSRes: String;
if WSAStartup(MAKEWORD(2,0),WSAData)=0 then begin try S:= '123.123.123.123'; SockAddrIn.sin_addr.S_addr := inet_addr(PChar(S)); HostEnt:=gethostbyAddr(@SockAddrIn.sin_addr.S_addr,SizeOf(SockAddrIn.sin_addr.S_addr),AF_INET); DNSRes:=StrPas(HostEnt^.h_name); except end; WSACleanup; end; |
grez
msch
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
Harry M. - Mi 02.02.05 21:01
meine comiler hat folgendes zubemängeln
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| [Fehler] Unit1.pas(25): Undefinierter Bezeichner: 'PHostEnt' [Fehler] Unit1.pas(26): Undefinierter Bezeichner: 'TWSAData' [Fehler] Unit1.pas(27): Undefinierter Bezeichner: 'TSockAddrIn' [Fehler] Unit1.pas(38): Undefinierter Bezeichner: 'WSAStartup' [Warnung] Unit1.pas(38): Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert [Fehler] Unit1.pas(41): Operator oder Semikolon fehlt [Fehler] Unit1.pas(41): Undefinierter Bezeichner: 'inet_addr' [Fehler] Unit1.pas(42): Undefinierter Bezeichner: 'gethostbyAddr' [Fehler] Unit1.pas(42): Operator oder Semikolon fehlt [Fehler] Unit1.pas(42): EXCEPT oder FINALLY erwartet [Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'WSACleanup' [Fehler] Unit1.pas(47): Deklaration erwartet, aber Bezeichner 'Label1' gefunden [Fehler] Unit1.pas(49): '.' erwartet, aber ';' gefunden [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
muß ich da noch irgend ne uses hinzufügen??
MSCH - Fr 04.02.05 19:13
uses winsock;
sorry
Harry M. - Sa 05.02.05 02:01
nun kann man es zwar comilieren aber es passiert nichts. woran kann das liegen?
UC-Chewie - Sa 05.02.05 11:52
Äh, liegt der Code auch in einer Prozedur, die du aufrufst?
Harry M. - Sa 05.02.05 18:04
natürlich
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); var S:String; HostEnt : PHostEnt; WSAData : TWSAData; SockAddrIn: TSockAddrIn; DNSRes: String;
begin if WSAStartup(MAKEWORD(2,0),WSAData)=0 then begin try S:= '81.169.132.68'; SockAddrIn.sin_addr.S_addr := inet_addr(PChar(S)); HostEnt:=gethostbyAddr(@SockAddrIn.sin_addr.S_addr,SizeOf(SockAddrIn.sin_addr.S_addr),AF_INET); DNSRes:=StrPas(HostEnt^.h_name); except end; WSACleanup; end; Label1.Caption := DNSRes;
end; |
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
max120b - Sa 05.02.05 20:49
Moin allerseits!
In der Pozedur wird der Variablen "s" die IP zugewiesen,
von der der Hostname ermittelt werden soll. Da is so wies dasteht
irgendwas mit 81... festgelegt. Wenn die IP im Lokalen Netz aber nicht vorhanden ist,
kann natürlich kein Hostname ermittelt werden.
Probier doch mal, ob sich was tut, wenn du anstatt einer festgelegten IP ein Text einfügst (z.B. aus nem Edit oder so) den man andern kann.
Ansonsten probier mal ob n' http:// oder ftp:// und so weiter vor der IP
was bringt.
mfg
Max120b
Harry M. - Sa 05.02.05 21:48
ja, für das lokale netz geht das. aber ich hätte es gerne für das globale. also wenn ich eingebe 81.169.132.68 da soll da stehen
http://www.delphi-forum.de
MSCH - Sa 05.02.05 22:58
die funktion funktioniert eigentlich überall - benutz sie selber um namen zu finden - egal ob LAN oder WAN.
grez
msch
Harry M. - Sa 05.02.05 23:34
bei mir leider nicht, mein debugger meldet
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00455753 in Modul 'Project1.exe'. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
und wenn ich es ohne debugger starte, kommt nix label1 bleibt leer
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!