vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück
Rubrik: HTML/Internet/Netzwerk · Internet / Browser / IE   |   VB-Versionen: VB4, VB5, VB619.04.02
WHOIS - Prüfen, ob Domain belegt oder noch frei

Dieses Beispiel zeigt, wie man einen Domain-Checker realisiert, der prüft, ob eine Domain noch frei ist oder bereits belegt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  17.261 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Sie möchten eine eigene Homepage ins Netz stellen? Dann brauchen Sie zunächst eine Domain (URL-Adresse), unter der man Ihre Homepage abrufen kann.

Und bevor man eine Domain bei der zuständigen DENIC anmelden kann, muss man prüfen, ob die Wunsch-Domain noch frei ist, oder schon belegt. So eine Domain-Abfrage nennt man auch WHOIS-Abfrage. WHOIS deshalb, weil man über die WHOIS-Datenbanken abfragen kann, wer sich hinter einer Domain "versteckt" oder besser gesagt, wer der Besitzer der Domain ist.

Für eine WHOIS-Abfrage gibt es unzählige CGI-, ASP und PHP-Skripte, um z.B. einen Domain-Checker direkt auf der eigenen Homepage anzubieten. Wie sieht es aber aus, wenn man eine solche Anfrage über ein VB-Programm realisieren will?

Genau das zeigt Ihnen das nachfolgende Codebeispiel.

Erstellen Sie ein neues Projekt und fügen gleich mal das Winsock-Control hinzu (Menü Projekt - Komponenten - "Microsoft Winsock-Control"). Plazieren Sie auf die Form folgende Steuerelemente:

  1. TextBox: txtDomain
  2. CommandButton: cmdWHOIS
  3. MultiLine-TextBox: txtWHOIS
  4. Label-Control: lblStatus
  5. Winsock-Control: Winsock1

Die TextBox txtDomain dient zur Eingabe der zu prüfenden Domain. Über die Schaltfläche cmdWHOIS wird die WHOIS-Abfrage gestartet. Während des Abfrage-Vorgangs wird der aktuelle Status im Label lblStatus ausgegeben. Das Ergebnis der Abfrage wird abschließend in der MutliLine-TextBox txtWHOIS angezeigt.

Und hier der vollständige Code

Option Explicit
 
' Speichert das Ergebnis der WHOIS-Abfrage
Private sData As String
Private Sub Form_Load()
  ' Schaltfläche zunächst deaktivieren
  cmdWHOIS.Enabled = False
End Sub
Private Sub txtDomain_Change()
  ' CommandButton aktivieren
  cmdWHOIS.Enabled = (Trim$(txtDomain.Text) <> "")
End Sub
Private Sub cmdWHOIS_Click()
  ' WHOIS-Anfrage starten
  Screen.MousePointer = vbHourglass
  txtWHOIS.Text = ""
  With Winsock1
    .Close
    .LocalPort = 0
 
    ' Verbinden mit allwhois.com (Port 80)
    lblStatus.Caption = "Verbinden mit www.allwhois.com..."
    .Connect "www.allwhois.com", 80
  End With
End Sub
Private Sub Winsock1_Connect()
  ' Verbunden - jetzt Domainanfrage losschicken
  Dim sDomain As String
 
  ' ggf. "http://www." entfernen
  sDomain = Trim$(txtDomain.Text)
  If LCase$(Left$(sDomain, 7)) = "http://" Then _
    sDomain = Mid$(sDomain, 8)
  If LCase$(Left$(sDomain, 4)) = "www." Then _
    sDomain = Mid$(sDomain, 5)
 
  ' Ergebnisbuffer leeren
  sData = ""
 
  ' Abfrage abschicken
  lblStatus.Caption = "Verbunden... Domainabfrage wird gestartet"
  DoEvents
 
  Winsock1.SendData "GET /cgi-bin/allwhois3.cgi?dn=" & _
    sDomain & vbCrLf
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  ' Daten werden empfangen
  Dim sTemp As String
 
  On Error Resume Next
  Winsock1.GetData sTemp
  lblStatus.Caption = "Verbunden... Daten werden empfangen"
  DoEvents
 
  ' Chr(10) durch Chr(13)+Chr(10) ersetzen, da
  ' Zeilenumbrüche sonst nicht korrekt dargestellt
  ' werden (UNIX)
  sData = sData & Replace(sTemp, Chr$(10), vbCrLf) & vbCrLf
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, _
  Description As String, ByVal Scode As Long, _
  ByVal Source As String, ByVal HelpFile As String, _
  ByVal HelpContext As Long, _
  CancelDisplay As Boolean)
 
  ' Fehler
  lblStatus.Caption = "Fehler!"
  DoEvents
 
  Winsock1.Close
  Screen.MousePointer = vbNormal
End Sub
Private Sub Winsock1_Close()
  ' Winsock schließen
  Winsock1.Close
 
  ' nach den wirklichen Informationen suchen
  Dim sCheck As String
 
  sCheck = "<textarea NAME=""description"" rows=10 cols=55 wrap=physical>"
  If InStr(sData, sCheck) > 0 Then
    sData = Mid$(sData, InStr(sData, sCheck) + Len(sCheck))
    If InStr(sData, "</textarea></form>") > 0 Then
      sData = Mid(sData, 1, InStr(sData, "</textarea></form>") - 1)
    End If
  End If
 
  ' Ausgabe im Textfeld
  txtWHOIS.Text = sData & vbCrLf
 
  If InStr(sData, "[admin-c]") > 0 Then
    lblStatus.Caption = "Domain ist bereits belegt..."
  Else
    lblStatus.Caption = "Domain ist noch frei..."
  End If
 
  Screen.MousePointer = vbNormal
End Sub

Dieser Tipp wurde bereits 17.261 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2021 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