Console Application demonstrating using Async Ping.
Code:'KLEINMA 'WWW.VBFORUMS.COM 'THE PING CLASS IS IN THIS NAMESPACE Imports System.Net.NetworkInformation Module Module1 Sub Main() Dim myPingList As New List(Of String) 'A LIST TO HOLD SOME STRINGS Dim myPing As Ping = Nothing 'THE PING CLASS WE NEED TO USE Dim timeout As Integer = 4000 'TIMEOUT FOR PING REQUESTS Dim buffer As Byte() = {0, 10, 20, 30, 40, 50, _ 60, 70, 80, 90, 100, _ 110, 120, 130, 140, 150, _ 160, 170, 180, 190, 200} 'A BUFFER OF SOME DATA TO PASS IN (optional) 'ADD A BUNCH OF THINGS TO PING myPingList.Add("127.0.0.1") myPingList.Add("www.google.com") myPingList.Add("www.baddomain1234567890.com") myPingList.Add("www.yahoo.com") myPingList.Add("192.168.1.1") 'LOOP THE STRING LIST OF PLACES WE WANT TO PING For Each ItemToPing As String In myPingList 'CREATE A NEW PING OBJECT myPing = New Ping 'ADD EVENT HANDLER FOR THE PING COMPLETED EVENT 'PingResult IS THE SUB ROUTINE BELOW AddHandler myPing.PingCompleted, _ AddressOf PingResult 'TELL USER WHAT IS BEING PINGED Console.WriteLine("Sending Async Request To: " & ItemToPing) 'SEND ASYNC PING REQUEST myPing.SendAsync(ItemToPing, timeout, buffer, ItemToPing) Next 'WAIT FOR A KEYPRESS TO CLOSE CONSOLE WINDOW Console.WriteLine("") Console.WriteLine("Press any key to close") Console.ReadKey(True) End Sub 'THE PING RESULT THAT WILL FIRE WHEN A PING COMPLETES Private Sub PingResult(ByVal sender As Object, ByVal e As System.Net.NetworkInformation.PingCompletedEventArgs) 'OUTPUT TO USER, e.UserState IS WHAT WE PASSED IN AS THE UserToken (ItemToPing) IN THE ABOVE CODE Console.WriteLine("") Console.WriteLine("***********************************") Console.WriteLine("Result is back from: " & e.UserState.ToString) 'IF THERE WAS AN ERROR THEN OUTPUT INFORMATION ABOUT THE ERROR 'OTHERWISE OUTPUT INFORMATION ABOUT THE RESULT OF THE PING REQUEST 'THE EVENTARGS e HAVE A LOT OF INFORMATION IN THE e.Reply VARIABLE If e.Error IsNot Nothing Then Console.WriteLine("Error: " & e.Error.Message) If e.Error.InnerException IsNot Nothing Then Console.WriteLine("More Info: " & e.Error.InnerException.Message) End If Else Console.WriteLine("Status: " & e.Reply.Status.ToString) Console.WriteLine("Round Trip Time: " & e.Reply.RoundtripTime.ToString) Console.WriteLine("Response Buffer Length:" & e.Reply.Buffer.Length.ToString) End If Console.WriteLine("***********************************") Console.WriteLine("") 'THE SENDER IN THE ARGUMENTS IS THE PING OBJECT THAT WE CREATED 'SO NOW REMOVE THE EVENT HANDLER LISTENER AS IT IS NO LONGER NEEDED 'AND CALL Dispose() ON THE PING CLASS TO CLEAN UP UNMANAGED RESOURCES With DirectCast(sender, Ping) RemoveHandler .PingCompleted, AddressOf PingResult .Dispose() End With End Sub End Module




Reply With Quote