Click here to Skip to main content
15,867,704 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
I'm doing a small program for testing network connectivity
All My work is ok but the only problem I'm facing is the code
VB
Res = My.Computer.Network.Ping(txtComputerName.Text).ToString

it's working ok on my local network and give me good results
but when I try to ping a web site it gives me error

note that I can access the internet through an ISA server 2006 and can't connect my computer directly to the router

What I have tried:

This is the entire function
VB
<pre>     Try
            Dim Res As Boolean

            lblError.Text = String.Empty
            StopPing = False
            Me.PictureBox1.Image = ImageList1.Images(0)
            Me.lblElpased.ForeColor = Color.MidnightBlue

            Dim i As Short = 0
            Do
                Application.DoEvents()
                If StopPing Then Exit Do
                Threading.Thread.Sleep(300)
                Me.PictureBox1.Image = ImageList1.Images(0)
                Me.Refresh()
                Threading.Thread.Sleep(200)
                Application.DoEvents()
                Mtim = Stopwatch.StartNew
                Res = My.Computer.Network.Ping(txtComputerName.Text).ToString
                Mtim.Stop()
                Me.lblElpased.Text = "Time: " & Mtim.ElapsedMilliseconds & " ms"

                Dim hostInfo As IPHostEntry = Dns.GetHostEntry(txtComputerName.Text)
                Me.lblError.Text = hostInfo.HostName & vbCrLf

                If Res Then
                    Me.PictureBox1.Image = ImageList1.Images(1)
                    Me.lblElpased.ForeColor = Color.DarkGreen

                    Dim index As Integer
                    For index = 0 To hostInfo.AddressList.Length - 1
                        Me.lblError.Text &= hostInfo.AddressList(index).ToString & vbCrLf

                    Next
                Else
                    Me.PictureBox1.Image = ImageList1.Images(2)
                    Me.lblElpased.ForeColor = Color.DarkRed

                    Dim index As Integer
                    For index = 0 To hostInfo.AddressList.Length - 1
                        Me.lblError.Text &= hostInfo.AddressList(index).ToString & vbCrLf

                    Next
                End If
                i += 1
            Loop Until ((i >= NuPings.Value) And (chkKeepPing.Checked = False))
        Catch ex As Exception
            lblError.Text = ex.Message
        End Try
Posted
Updated 30-Jul-18 22:45pm
v2
Comments
Richard MacCutchan 31-Jul-18 4:26am    
"t gives me error"
Then you need to find out why it gives you error.
samerselo 31-Jul-18 4:32am    
the cause of error is

I have ISA server that provide internet to the network that means to connect to internet I need (proxy + credentials) to be passed correctly to ping command to be executed correctly that is what I failed to do
Dave Kreskowiak 31-Jul-18 9:32am    
What's the name you're trying to ping? A lot of sites no longer respond to pings.

1 solution

Quote:
note that I can access the internet through an ISA server 2006 and can't connect my computer directly to the router
In such cases you can only use protocols that are allowed (forwarded) by the server. For ping this requires that outgoing ICMP packets and the corresponding responses are not filtered. You might ask the administrator of the ISA server about this.

You can't ping a website. The parameter for the Ping() function must be an IP address, an URL like www.example.com, or a computer name of a system in your local network.

See also Network.Ping Method (Microsoft.VisualBasic.Devices) | Microsoft Docs[^]:
Quote:
The Ping method is not a fail-safe method for determining the availability of a remote computer: the ping port on the target computer may be turned off or the ping request may be blocked by a firewall or router.

The address passed to the Ping method must be DNS resolvable and cannot be preceded by "http://".
That means that you might get no response even when ICMP ping packets are not filtered by the ISA server.

Quote:
I'm doing a small program for testing network connectivity
Depending on what you mean by "network connectivity" this can be done by other methods:

Check the status of your systems network interface (NetworkInterface.OperationalStatus Property (System.Net.NetworkInformation) | Microsoft Docs[^]).

Perform a name resolution using Dns.GetHostEntry Method (System.Net) | Microsoft Docs[^] with a valid name. This will check the connection to one of the DNS resolvers configured for your network interface. This might be either the ISA server, the router, or a DNS server in the net and tells you so if connectivity to that system is present.

For internet connectivity (which would be a problem of the ISA server or router if not available) try to connect to a service like HTTP of a known server that is not blocked by the ISA server.

[EDIT]
There is also a Windows API function returning the connection state: INetworkListManager::GetConnectivity | Microsoft Docs[^]

Unfortunately there seems to be no .Net equivalent. But the web should provides examples on how to call it from .Net like How to use the Windows NLM API to get notified of new network connectivity[^].
[/EDIT]
 
Share this answer
 
v2
Comments
samerselo 31-Jul-18 7:22am    
thank you
that expain alot

the goal of my program is two things
1 - is to Know if computer is on and I can access it thorough local network
2 - is to check if my local computer have an access to internet or not

I achieved the number 1 successfully but failed on number 2
samerselo 31-Jul-18 7:26am    
note: How ping command of command prompt does the two goals at the same time
Jochen Arndt 31-Jul-18 7:50am    
See my updated answer.
Using ping is the least reliable method even when not filtered.
samerselo 31-Jul-18 8:12am    
interesting I'll study that maybe I'll find something useful
samerselo 31-Jul-18 8:30am    
That didn't do it

the function give true to the result Is the machine connected to internet? even when I use an account that does not have access to internet

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900