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 22.135 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 Oktober 2024 Heinz Prelle Firewall-Status unter WinXP/Vista prüfen Das Beispiel prüft, ob die Firewall unter Windows XP/Vista eingeschaltet ist oder nicht. Zudem wird eine Abfrage durchgeführt ob es sich bei dem zugrundeliegenden Betriebssystem um Windows XP/Vista handelt oder nicht. sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |