vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Hostnamen einer IP-Adresse ermitteln 
Autor: ManfredV
Datum: 21.01.10 17:35

Liebe Mit-VB-Programmierer,

ich habe ein Problem, bei dem ich nicht weiterkomme, auch die Internet-Recherche war leider nicht zielführend. Daher wende ich mich an Euch in der Hoffnung, das vielleicht jemand eine Idee oder einen Hinweis zu meinem Problem hat.

Es geht darum, dass ich für eine gegebene IP-Adresse den Hostnamen ermitteln möchte.
Das an sich funktioniert auch sehr gut mit folgendem API-Aufruf
Private Declare Function gethostbyaddr Lib "wsock32.dll" (haddr As Long, ByVal _
  hnlen As Long, ByVal addrtype As Long) As Long
Der Nachteil dieses Aufrufs ist aber, dass er sehr lange dauert, wenn es für eine IP-Adresse keinen Hostnamen gibt.
Deswegen habe ich mich nach Alternativen umgeschaut und bin bei meiner Suche auf folgenden API-Aufruf gestoßen:
Private Declare Function getnameinfo Lib "WS2_32" (addr As Any, ByVal iLen As _
  Long, ByRef host As String, ByVal HostLen As Long, ByRef serv As String, _
  ByVal servlen As Long, ByVal Flags As Long) As Long
Beim Versuch, mit Hilfe dieser API-Funktion beispielsweise den Hostnamen der IP-Adresse 209.85.129.147 (das ist die IP-Adresse von www.google.de) zu ermitteln, bin ich jedoch kläglich gescheitert. Der Return-Code des API-Aufrufs ist stets 11004.
Laut meiner Recherche bedeutet dieser Code "WSANO_DATA", was - wenn ich das richtig verstanden habe - bedeutet, dass mein Aufruf an sich korrekt war, es aber für die abgefragte IP-Adresse keine Daten gibt.

Ich hab schon so ziemlich alles ausprobiert, hab verschiedene Ports angegeben (und auch auf die richtige Byte-Reihenfolge via htons geachtet) und mit dem Flags-Parameter herumgespielt. Ich hab mal die Hostname-Variable als festen String (String * 1025) oder als normalen String definiert und ihm im letzteren Fall vor dem API-Aufruf per String$(1025) entsprechenden Speicherplatz zugewiesen.
Und selbstverständlich habe ich es mit einem ganzen Haufen unterschiedlicher IP-Adressen (für die es Hostnamen gibt) ausprobiert.
Immer und grundsätzlich hatte der Return-Code den Wert 11004!

Was mache ich falsch?
Mache ich vielleicht einen grundsätzlichen Denkfehler?
Gibt es sonstige Alternativen?

Oder: Weiß vielleicht jemand, wie ich gethostbyaddr im Falle eines nichtvorhandenen Hostnamens schneller machen kann - vielleicht mit Hilfe eines wie auch immer gearteten Timeouts?

Der Aufruf von WSAAsyncGetHostByAddr wäre keine Alternative, da ich in dem Umfeld, in dem ich die Abfrage starte, keine asynchronen Strukturen aufbauen kann.

Für jegliche Art der Hilfestellung wäre ich enorm dankbar!

Manfred
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Hostnamen einer IP-Adresse ermitteln5.827ManfredV21.01.10 17:35
Re: Hostnamen einer IP-Adresse ermitteln3.513ManfredV21.01.10 17:35
Re: Hostnamen einer IP-Adresse ermitteln3.359ModeratorMartoeng21.01.10 22:51
Re: Hostnamen einer IP-Adresse ermitteln3.266ManfredV22.01.10 06:56
Re: Hostnamen einer IP-Adresse ermitteln3.325ModeratorMartoeng22.01.10 11:25
Re: Hostnamen einer IP-Adresse ermitteln3.246ManfredV22.01.10 12:08
Re: Hostnamen einer IP-Adresse ermitteln3.497ModeratorMartoeng22.01.10 13:46
Re: Hostnamen einer IP-Adresse ermitteln3.196ManfredV22.01.10 13:58
Re: Hostnamen einer IP-Adresse ermitteln3.265ModeratorMartoeng22.01.10 15:07
Re: Hostnamen einer IP-Adresse ermitteln3.217ManfredV22.01.10 17:58
Re: Hostnamen einer IP-Adresse ermitteln3.277ModeratorMartoeng22.01.10 18:12
Re: Hostnamen einer IP-Adresse ermitteln3.337ManfredV23.01.10 09:28
Re: Hostnamen einer IP-Adresse ermitteln3.256ManfredV23.01.10 10:17
Re: Hostnamen einer IP-Adresse ermitteln3.222ModeratorMartoeng23.01.10 11:36
Re: Hostnamen einer IP-Adresse ermitteln3.245ManfredV23.01.10 11:52

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel