Results 1 to 10 of 10

Thread: Async Ping How To

Threaded View

  1. #1

    Thread Starter
    I'm about to be a PowerPoster! kleinma's Avatar
    Join Date
    Nov 2001
    Location
    NJ - USA (Near NYC)
    Posts
    23,373

    Async Ping How To

    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
    Last edited by kleinma; Jul 3rd, 2009 at 09:48 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width