ASP.NET

Mit der IP-Adresse den Host-Namen auflösen

Ermitteln des Hosts über das .NET-DNS-Objekt

Bei jeder Anfrage an einen Web-Server wird mit dem Request die anfragende IP-Adresse mitgeschickt. Über Request.ServerVariables("REMOTE_ADDR") kann man diese ermitteln. Was man jedoch nicht bekommt ist den DNS-Host-Namen, d.h. die Übersetzung der IP-Adresse in den Server-Namen. Um diesen herauszubekommen muss man in ASP eine externe Komponente bemühen, die in den meisten Fällen Geld kostet und nur von wenigen Providern angeboten wird, oder man nutzt das DNS-Objekt der System.Net-Klasse, sofern der eigene Web-Server schon auf Windows 2003 läuft und über ASP.NET verfügt.

Zunächst wird das HTML-Grundgerüst der neuen ASPX-Seite im Visual Studio .NET HTML-Designer angelegt:

<html>
   <head>
       <title>DNS-Host-Namen ermitteln</title>
   </head>
   <body>
       <form runat="server" id="frmResolveIP">
            IP-Adresse:
            <asp:textbox runat="server" id="txtIP" width="110px"/>
            <asp:button runat="server" onclick="LookUpHost"
                  text="Ermitteln" id="cmdGo" />
            <span>&nbsp;&gt;&nbsp;</span>
            <asp:label runat="server" id="lblHostName" />
        </form>
    </body>
</html>

Wir brauchen nicht mehr als eine Textbox (txtIP), eine Schaltfläche zum Ausführen der Funktion (cmdGo) und ein Label (lblHostName) in das das Ergbnis geschrieben wird. Alle Elemente werden von einem HTML-Formular umschlossen (frmResolveIP).

Die Direktiven, am Anfang des HTML-Codes werden wie folgt angepasst:

<%@ Page Language="vb" %>
<%@ Import Namespace="System.Net" %>

Mit der ersten Zeile wird die Sprache auf VB festgelegt und mit der zweiten wird die benötigte .NET-Klasse System.Net importiert, um leichter Zugriff auf das gewünschte Objekt zu erlangen.

Die eigentliche Arbeit, die im OnClick-Ereignis der Schaltfläche aufgerufen wird, erledigt eine Prozedur namens LookUpHost, die im HEAD des HTML-Codes abgelegt wird:

<script runat="server">
    Sub LookUpHost(sender As Object, e As System.EventArgs)
        Try
            Dim HostInfo As IPHostEntry = Dns.GetHostByAddress(txtIP.Text)
            lblHostName.Text = HostInfo.HostName
        Catch ex As Exception
            lblHostName.Text = "unbekannter Host"
        End Try
    End Sub
</script>

Um etwaige Fehler abzufangen ist die Prozedur mit einem Try-Catch-Block ausgerüstet. Tritt bei der Ermittlung des Host-Namens ein Fehler auf, z.B. weil das Ziel nicht erreichbar ist, so wird die Zeichenfolge "unbekannter Host" zurückgegeben.

Als Abschluss werden die HTML-Elemente durch ein wenig CSS-Code im HEAD formatiert:

<style><!--
    body, input { font-family: Tahoma; font-size: 8pt }
--></style>
kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

1 Kommentar bislang...

  • Ich muss sagen das funktioniert gut, viel einfacher als die IPs auf einer anderen Hp auflösen zu lassen.
    1
    Martin : Donnerstag, 13. März 2008 17:37

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 40

  • Datum: 17.07.2005
    Kategorie: ASP.NET
    Zugriffe: 8.580
    Kommentare: 1
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei