Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Kommunikation und Netzwerk

k24:k24.2:k24.2.2:start

24.2.2 DNSClient

Die Klasse DNSClient (gb.net) implementiert einen einfachen DNS-Client (Resolver) für die Ermittlung des Host-Namens zu einer vorgegebenen IP-Adresse (reverse lookup) und für die Ermittlung der IP-Adresse zu einem vorgegebenen Host-Namen (forward lookup). Man sagt, dass Host-Namen in IP-Adressen und umgekehrt aufgelöst werden. Die Anfragen richtet der DNS-Client an einen DNS-Server, der entweder in den TCP/IP-Einstellungen für Ihr System eingetragen ist oder über DHCP angefordert werden kann.

Der DNS-Client kann im asynchronen oder im synchronen Modus arbeiten. Den Modus können Sie über die Eigenschaft 'Async' einstellen. Im synchronen Modus wird das Programm nicht auf Ereignisse während des Auflösens von Host-Namen und IP-Adressen reagieren. Der Standard ist der synchrone Modus.

Einen interessanten Überblick zum Thema DNS (Domain Name System) vermittelt Ihnen die Webseite http://de.wikipedia.org/wiki/Domain_Name_System.

24.2.2.1 Eigenschaften

Die Klasse DNSClient verfügt über diese Eigenschaften:

EigenschaftDatentypDefaultBeschreibung
AsyncBooleanFalseErmittelt oder setzt den asynchronen Modus des DNS-Client. Wenn diese Eigenschaft auf TRUE gesetzt ist, wird der DNS-Client im asynchronen Modus zu arbeiten, so dass das Programm nicht während des Auflösungsprozesses angehalten wird. Die Status-Eigenschaft hat dann den Wert Net.Active und das Ereignis 'Finished' wird ausgelöst, nachdem der Auflösungsprozess beendet wurde.
HostIPString-Diese Eigenschaft kann auf zwei Arten eingesetzt werden: Lesen Sie die IP-Adresse aus, nach dem der Host-Name aufgelöst wurde oder geben Sie die IP-Adresse an, von der Sie den Host-Namen ermitteln möchten.
HostNameString-Diese Eigenschaft kann auf zwei Arten eingesetzt werden: Lesen Sie den Host-Namen aus, nach dem die IP-Adresse aufgelöst wurde oder geben Sie den Hostnamen an, von dem Sie die IP-Adresse ermitteln möchten.
StatusInteger0Diese Eigenschaft spiegelt den aktuellen Status des DNS-Clients wider: Net.Active – es wird versucht, Host-Namen in die IP-Adresse aufzulösen oder umgekehrt und Net.Inactive (DNS-Client ist inaktiv).

Tabelle 24.2.2.1.1 : Eigenschaften der Klasse DNSClient

24.2.2.2 Methoden

Die Klasse DNSClient verfügt über diese drei Methoden:

MethodeBeschreibung
GetHostIP()Es wird versucht, die IP-Adresse zum angegebenen Host-Namen – gespeichert in der Eigenschaft 'HostName' – zu ermitteln (aufzulösen). Das Ergebnis der Auflösung ist in der Eigenschaft 'HostIP' gespeichert. Die Eigenschaft 'HostIP' hat den Wert NULL, wenn die Auflösung fehlschlug.
GetHostName()Es wird versucht, den Host-Namen zur angegebenen IP-Adresse – gespeichert in der Eigenschaft 'HostIP' – zu ermitteln (aufzulösen). Das Ergebnis der Auflösung ist in der Eigenschaft 'HostName' gespeichert. Wenn die Auflösung fehlschlug, dann hat Eigenschaft 'HostName' den Wert NULL.
Stop()Bricht nur eine asynchrone Anfrage ab. Wenn der DNS-Client im synchronen Modus arbeitet oder inaktiv ist, dann bewirkt die Methode 'Stop()' nichts.

Tabelle 24.2.2.2.1 : Methoden der Klasse DNSClient

24.2.2.3 Ereignis

Die Klasse DNSClient verfügt nur über die Eigenschaft Finished. Dieses Ereignis wird ausgelöst, wenn eine (asynchrone) Auflösungsanfrage beendet wurde. Innerhalb der Ereignisbehandlungsroutine können Sie die in den Eigenschaften HostIP und HostName gespeicherten Werte auslesen und in Ihrem Programm weiter verarbeiten.

24.2.2.4 Projekt

Der DNS-Client aus der Beispiel-Sammlung von Gambas wurde so angepasst, dass alle Eigenschaften, Methoden und das Ereignis 'Finished' eingesetzt werden. Sie finden das adaptierte Projekt als Projekt-Quellarchiv im Download-Bereich. Die nächsten Bilder sollen Ihnen einen Eindruck von der Arbeit mit dem DNS-Client vermitteln:

Abbildung 24.2.2.4.1: Programm-Oberfläche

Abbildung 24.2.2.4.2: Auflösung Host-Name → IP-Adresse

Abbildung 24.2.2.4.3: Auflösung IP-Adresse → Host-Name

Abbildung 24.2.2.4.4: Auflösung Host-Name → IP-Adresse

Abbildung 24.2.2.4.5: Die Auflösung von gambas-book.net gelang nicht

Abbildung 24.2.2.4.6: Die Auflösung der IP-Adresse 46.30.56.205 gelang nicht

Kommentare:

  • Bild 24.2.2.4.1: Nach dem Programmstart können Sie drei Hostnamen für drei DNS-Clients eintragen. Es ist der asynchrone Modus eingestellt.
  • Bild 24.2.2.4.2: Mit Start lösen Sie den Auflöse-Prozess (Host-Name → IP-Adresse) für alle drei DNS-Clients aus und erhalten die angezeigten IP-Adressen.
  • Bild 24.2.2.4.3: Mit dem Doppelpfeil-Button übernehmen Sie die 3 IP-Adressen oder geben dort selbst IP-Adressen ein und können diese mit 'Start' in die 3 Host-Namen auflösen – wenn das möglich ist.
  • Bild 24.2.2.4.4: Die Auflösung gelingt auch für lokale Hostnamen.
  • Bild 24.2.2.4.5: Die Auflösung für den Host-Namen gambas-book.net gelingt nicht, da dieser Host-Name offensichtlich keinem DNS-Server bekannt ist. In diesem Fall wird der Rückgabewert NULL mit der Konstanten Private Const NULL_NOTFOUND As String = „Nicht gefunden“ quittiert.
  • Bild 24.2.2.4.6: Die Auflösung für die IP-Adresse 46.30.56.205 lieferte NULL. Probleme bei der Auflösung von IP-Adressen oder Host-Namen bereiten u.a. Firewalls.

24.2.2.5 Exkurs

Für den Einsatz der Instruktionen EXEC und SHELL können Sie die vorgestellten Befehle mit Erfolg einsetzen, um den Host-Namen zu einer vorgegebenen IP-Adresse oder die IP-Adresse zu einem vorgegebenen Host-Namen zu ermitteln:

hans@linux:~$ nslookup gambas-buch.de 
Server:		127.0.0.1 
Address:	127.0.0.1#53 
Non-authoritative answer: 
Name:	gambas-buch.de 
Address: 109.237.140.40 

hans@linux:~$ nslookup 109.237.140.40 
Server:		127.0.0.1 
Address:	127.0.0.1#53 
Non-authoritative answer: 
40.140.237.109.in-addr.arpa	name = alfa3035.alfahosting-server.de. 

hans@linux:~$ resolveip -s gambas-buch.de 
109.237.140.40
hans@linux:~$ dig +short gambas-buch.de 
109.237.140.40

hans@linux:~$ host gambas-buch.de 
gambas-buch.de has address 109.237.140.40

hans@linux:~$ ping -a -c 1 gambas-buch.de 
PING gambas-buch.de (109.237.140.40) 56(84) bytes of data. 
64 bytes from alfa3035.alfahosting-server.de (109.237.140.40): icmp_req=1 ttl=58 time=59.3 ms

Oft ist es von Interesse, welche IP-Adresse Ihnen vom Provider zugewiesen worden ist. In diesem Fall kommen Sie mit einer der vier Anweisungen zum Ziel:

hans@linux:~$ curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+" 
hans@linux:~$ wget -qO - http://cfaj.freeshell.org/ipaddr.cgi 
hans@linux:~$ curl "http://www.networksecuritytoolkit.org/nst/cgi-bin/ip.cgi" 
$ wget -qO - www.meineip.de 2>&1 | grep 'title="Meine IP:' | sed -e 's/.*"ip">//' -e 's/<.p>.*//'

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k24/k24.2/k24.2.2/start.txt · Zuletzt geändert: 24.08.2020 (Externe Bearbeitung)

Seiten-Werkzeuge