Detecting Internet Connection

  • Thread starter Thread starter Matt Hawley
  • Start date Start date
M

Matt Hawley

I'm facing a problem where I need to verify that my windows forms application has access to the internet before it can do anything. Currently, the only way I can think of is by creating a HttpWebRequest and point it to the specified URL I wish to connect to later on, and if that throws an error, I know I don't have an internet connection. Is this the best method for detecting an internet connection, or is there some sort of routine that I need to follow that is more tuned for performance?

Thanks for your help!

Matt Hawley, MCAD .NET
http://www.eworldui.net
 
I believe this is the method that the vast majority of applications use to identify whether they are online, regardless of whether they run on the .NET Framework or not

It is also the method used to verify that an existing connection is still "connected"

~~K
 
Thanks, I'll go forward with that.

Matt Hawley, MCAD .NET
http://www.eworldui.net

I believe this is the method that the vast majority of applications use to identify whether they are online, regardless of whether they run on the .NET Framework or not. It is also the method used to verify that an existing connection is still "connected". ~~K
 
Matt Hawley said:
I'm facing a problem where I need to verify that my windows forms
application has access to the internet before it can do anything. Currently,
the only way I can think of is by creating a HttpWebRequest and point it to
the specified URL I wish to connect to later on, and if that throws an
error, I know I don't have an internet connection. Is this the best method
for detecting an internet connection, or is there some sort of routine that
I need to follow that is more tuned for performance?

This seems to be the only reliable method to check for an internet
connection. Google will give you other solutions but they generaly rely on
checking if there's a network device configured which doesn't ensure you
that the computer has actually access to the internet. And even if it has
access to the internet, it may be behind a proxy server that restricts this
access to some sites or particular protocols. So the only way to know for
sure if a computer can access your particular site is to try...
 
Good explanation. Thanks!

Matt Hawley, MCAD .NET
http://www.eworldui.net


Matt Hawley said:
I'm facing a problem where I need to verify that my windows forms
application has access to the internet before it can do anything. Currently,
the only way I can think of is by creating a HttpWebRequest and point it to
the specified URL I wish to connect to later on, and if that throws an
error, I know I don't have an internet connection. Is this the best method
for detecting an internet connection, or is there some sort of routine that
I need to follow that is more tuned for performance?

This seems to be the only reliable method to check for an internet
connection. Google will give you other solutions but they generaly rely on
checking if there's a network device configured which doesn't ensure you
that the computer has actually access to the internet. And even if it has
access to the internet, it may be behind a proxy server that restricts this
access to some sites or particular protocols. So the only way to know for
sure if a computer can access your particular site is to try...
 
Yes ... Except that it doesn't always work.

Our WinForms app is heavily dependent on the Internet and our biggest
support problem is people with perfectly valid Internet connections that the
app (using the method below) fails to detect. It appears that .Net has a
great deal of trouble with some proxies that require login (including the MS
one) and, it seems, with VPN connections. We have not been able to resolve
this and it's increasingly frustrating as it's not anything we've been to
repro here although several customers, including IT managers and developers,
have noted this problem. It's very real and very, very frustrating. In all
cases, the customer using IE can access the URL just fine; it only fails
when we do the WebRequest.

Any suggestions would be appreciated.



The code we use is something like (simplified):

Try

wr = CType(WebRequest.Create(UseURL), HttpWebRequest)

Resp = CType(wr.GetResponse(), HttpWebResponse)

Catch we As WebException

'Connection failed

End try

One thing -- we do lock the ProtocolVersion to 1.0 for backwards compat with
some systems. Can that be an issue with some proxies? Is there something
we are specifically supposed to be to ensure that we login to the proxy?

Thanks, Steve
 
Hi,

just my two cents and my way to check for an exisiting connection to
the internet. If you made a programmatically dialin and you want to
check if the dialin was a success, try to make a DNS.Resolve on a
reliable host like www.microsoft.com

To make a Dialin automatically (if the network is properly
configurated, simply make a webrequest to a reliable host.

Greetz

Jens
 
Hi Steve,

Steve Podradchik said:
Yes ... Except that it doesn't always work.

Our WinForms app is heavily dependent on the Internet and our biggest
support problem is people with perfectly valid Internet connections that the
app (using the method below) fails to detect. It appears that .Net has a
great deal of trouble with some proxies that require login (including the MS
one) and, it seems, with VPN connections.

Have a look at the WebProxy class. In theory, it should allow you to specify
the Web proxy server to be used and a login/password to use for the proxy
server login. I've never had to occasion to test it in a real life situation
but it will maybe solve at least some of your problems
 
Back
Top