AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Rechner-Name aus IP: Wieso ist die Function so langsam?
Thema durchsuchen
Ansicht
Themen-Optionen

Rechner-Name aus IP: Wieso ist die Function so langsam?

Ein Thema von Helmi · begonnen am 1. Dez 2005 · letzter Beitrag vom 1. Dez 2005
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Rechner-Name aus IP: Wieso ist die Function so langsam?

  Alt 1. Dez 2005, 19:37
Hallo,

ich habe bei den Schweizern folgenden Code gefunden:

Delphi-Quellcode:
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;
Er dient dazu, aus einer Ip-Adresse den Rechnernamen rauszufinden.

Dies funktioniert auch. Nur bei der Zeile:
  HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); wartet das Programm gute 10 - 15 sek und tut nichts.

Dazu meine Fragen:
  • Wieso stoppt dort das Programm?
  • Gibts vielleicht noch nen anderen Code um den Rechnernamen über IP-Adresse rausfinden zu können?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Rechner-Name aus IP: Wieso ist die Function so langsam?

  Alt 1. Dez 2005, 19:43
Delphi-Quellcode:
uses
  WinSock;

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('127.0.0.1'));
end;
Da es mit der lokalen IP Adresse ganz fix geht, liegt es wohl am Netzwerk.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Rechner-Name aus IP: Wieso ist die Function so langsam?

  Alt 1. Dez 2005, 19:47
Zitat von Luckie:
Da es mit der lokalen IP Adresse ganz fix geht, liegt es wohl am Netzwerk.
Scheint so leider!

Ich habs selber gerade mit der localen IP-Adresse getestet und da war es sehr flott - liegt wohl wirklich an den Sockets.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#4

Re: Rechner-Name aus IP: Wieso ist die Function so langsam?

  Alt 1. Dez 2005, 19:51
Zitat von Helmi:
Zitat von Luckie:
Da es mit der lokalen IP Adresse ganz fix geht, liegt es wohl am Netzwerk.
Scheint so leider!

Ich habs selber gerade mit der localen IP-Adresse getestet und da war es sehr flott - liegt wohl wirklich an den Sockets.
windows muss dazu ja erstmal eine namensauflösung machen. und das dauert übers netzwerk halt länger...
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Rechner-Name aus IP: Wieso ist die Function so langsam?

  Alt 1. Dez 2005, 20:45
ne keine namensauflösung sondern eine RDNS anfrage
das heist, es gibt einen reverse dns eintrag in den DNS servern, die zu einer IP den namen wissen.
somit eine "ip auflösung"

und da windows bei sich selbst den namen direkt kennt, geht das auch ohne umweg so schnell.
bei den internet IPs, muss da erstmal der ganze weg bis zum jeweiligen dienst gefunden und dann auch der rdns zurück kommen.. das braucht seine mehr oder weniger große zeit.

man beachte auch diesen wiki eintrag:

http://de.wikipedia.org/wiki/Reverse_Dom%C3%A4ne
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#6

Re: Rechner-Name aus IP: Wieso ist die Function so langsam?

  Alt 1. Dez 2005, 20:57
Zitat von supermuckl:
ne keine namensauflösung sondern eine RDNS anfrage
das heist, es gibt einen reverse dns eintrag in den DNS servern, die zu einer IP den namen wissen.
somit eine "ip auflösung"

und da windows bei sich selbst den namen direkt kennt, geht das auch ohne umweg so schnell.
bei den internet IPs, muss da erstmal der ganze weg bis zum jeweiligen dienst gefunden und dann auch der rdns zurück kommen.. das braucht seine mehr oder weniger große zeit.

man beachte auch diesen wiki eintrag:

http://de.wikipedia.org/wiki/Reverse_Dom%C3%A4ne
okay, ich hätte "namens"-auflösung in "" setzen sollen. In wirklichkeit wird ja die IP in einen Namen aufgelöst und nich andersrum.

reverse DNS geht aber nich im loacl-netzwerk. da wird für die "namens"-auflösung unter windows soweit ich weiss WINS hergenommen...
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz