Sie wollen einen Host oder eine IP anpingen und wollen dabei wie in DOS den Hostnamen auflösen wenn Sie eine IP-Adresse verwendet haben, dann hilft Ihnen nachfolgende Klasse, die auf der Ping-Klasse des .NET-Frameworks 2.0 aufbaut. Erstellen Sie in Ihrem Projekt eine neue Klasse mit dem Namen clsVBnetPing. Im Deklarations-Bereich fügen Sie folgende Importe ein: Imports System Imports System.Net Imports System.Net.Sockets Zwischen Public Class clsVBnetPing und End Class fügen Sie nun folgenden Code ein: Dim mIpAddr As String Dim mResponseTime As Long Dim mError As String Dim mHostName As String Dim mSuccess As Boolean ''' <summary> ''' Liefert die Rückmeldezeit in Millisekunden zurück ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property ResponseTime() As Integer Get ResponseTime = mResponseTime End Get End Property ''' <summary> ''' Liefert die Fehlermeldung zurück (ist leer bei erfolreichem Ping) ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property ErrorDesc() As String Get ErrorDesc = mError End Get End Property ''' <summary> ''' Liefert True zurück wenn Ping erfolgreich war (sonst False) ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property Success() As Boolean Get Success = mSuccess End Get End Property ''' <summary> ''' Liefert die IP-Adresse des Hosts zurück ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property IpAddress() As String Get If mIpAddr IsNot Nothing Then IpAddress = mIpAddr.ToString() Else IpAddress = "" End If End Get End Property ''' <summary> ''' Liefert den Hostnamen zurück ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property HostName() As String Get HostName = mHostName End Get End Property ''' <summary> ''' Versucht den Hostnamen aufzulösen (Führt kein Ping durch.) ''' </summary> ''' <param name="HName"></param> ''' <returns></returns> ''' <remarks></remarks> Public Function CheckByName(ByVal HName As String) As Boolean mError = "" Try mIpAddr = Dns.GetHostEntry(HName).AddressList(0).ToString mHostName = Dns.GetHostEntry(HName.ToString).HostName If mHostName.Length = 0 Then mHostName = HName Return True Catch ex As System.Net.Sockets.SocketException mError = ex.Message If mHostName.Length = 0 Then mHostName = HName Return False End Try End Function ''' <summary> ''' Versucht die IP-Adresse aufzulösen (Führt kein Ping durch.) ''' </summary> ''' <param name="ipAddr"></param> ''' <returns></returns> ''' <remarks></remarks> Public Function CheckByIpAddr(ByVal ipAddr As String) As Boolean mError = "" Try mIpAddr = System.Net.IPAddress.Parse(ipAddr).ToString Try mHostName = Dns.GetHostEntry(mIpAddr.ToString).HostName If mHostName.Equals(mIpAddr) Then mHostName = "" Return True Catch SEx As SocketException mError = SEx.Message Return False End Try Catch Ex As Exception mError = Ex.Message Return False End Try Return False End Function ''' <summary> ''' Diese Funktion prüft ob der übergebene String eine ''' (gültige) IP-Adresse ist ''' </summary> ''' <param name="sHostNameOrAddress">IP oder Hostname</param> ''' <returns>Liefert False zurück wenn die IP ungültig ist ''' bzw. ein Hostname übergeben wurde</returns> ''' <remarks></remarks> Public Function IsValidIP(ByVal sHostNameOrAddress As String) As Boolean Return System.Net.IPAddress.TryParse(sHostNameOrAddress, _ System.Net.IPAddress.Any) End Function ''' <summary> ''' Sendet ein Ping-Signal an die angegebene IP-Adresse oder den Hostnamen. ''' Über "Success" erhalten sie die Fehlermledung fals beim Pingen ein ''' Fehler aufgetreten ist ''' </summary> ''' <param name="sHostNameOrAddress">String. Der URL, der Computername oder ''' die IP-Adressse des Servers an den ein Ping-Signal gesendet werden soll.</param> ''' <param name="timeout">Zeitgrenzwert (in Millisekunden) für das Herstellen ''' einer Verbindung mit dem Ziel</param> ''' <param name="ResolveIPAndHostname">Wenn True, wird die IP-Adresse zu dem ''' übergebenen Hostnamen (und umgekehrt) ermittelt.</param> ''' <returns></returns> ''' <remarks></remarks> Public Function Ping(ByVal sHostNameOrAddress As String, _ Optional ByVal timeout As Integer = 5000, _ Optional ByVal ResolveIPAndHostname As Boolean = True) As Boolean Dim bIsIP As Boolean = System.Net.IPAddress.TryParse( _ sHostNameOrAddress, System.Net.IPAddress.Any) Dim oPing = New System.Net.NetworkInformation.Ping Dim PingReturn As System.Net.NetworkInformation.PingReply mError = "" mHostName = "" mIpAddr = "" mResponseTime = 0 Try PingReturn = oPing.Send(sHostNameOrAddress, timeout) ' Feststellen ob Ping erfolgreich war If PingReturn.Status = NetworkInformation.IPStatus.Success Then ' IP und Hostname ermitteln (jenachdem od übergebener String ' eine IP oder Host war) If ResolveIPAndHostname = True Then If bIsIP = False Then mIpAddr = PingReturn.Address().ToString mHostName = sHostNameOrAddress Else mIpAddr = sHostNameOrAddress mHostName = Dns.GetHostEntry(mIpAddr).HostName End If End If mResponseTime = PingReturn.RoundtripTime mSuccess = True Return True Else ' Prüfen ob der String von sHostNameOrAddress eine IP oder ' ein Hostname war If bIsIP Then mIpAddr = sHostNameOrAddress Else mHostName = sHostNameOrAddress End If mError = "Ping failed. IPStatus: " & PingReturn.Status.ToString mSuccess = False Return False End If Catch ex As System.Net.NetworkInformation.PingException If bIsIP Then mIpAddr = sHostNameOrAddress Else mHostName = sHostNameOrAddress End If mError = ex.InnerException.Message mSuccess = False Return False End Try End Function Und nun noch ein Beispiel für den Aufruf der neuen Klasse: Dim oPing As clsVBnetPing = New clsVBnetPing ' Als erstes muss die Funktion Ping aufgerufen werden If oPing.Ping("localhost") = True Then ' Ping erfolgreich Else ' Ping fehlgeschlagen End If ' Jetzt können die Rückgabe-Werte der Funktion ausgelesen werden MessageBox.Show("IPAdress: " & oPing.IpAddress & vbCrLf & _ "Host: " & oPing.HostName & vbCrLf & _ "Success: " & oPing.Success & vbCrLf & _ "Millisek.: " & oPing.ResponseTime & vbCrLf & _ "Fehlermeldung: " & oPing.ErrorDesc) oPing = Nothing Dieser Tipp wurde bereits 21.781 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
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. |