C# checking Internet connection

c#, networking

Solution

a little shorter version:

public static bool CheckForInternetConnection()
{
    try
    {
        using (var client = new WebClient())
        using (var stream = client.OpenRead("http://www.google.com"))
        {
            return true;
        }
    }
    catch
    {
        return false;
    }
}

Another option is:

Ping myPing = new Ping();
String host = "google.com";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
if (reply.Status == IPStatus.Success) {
  // presumably online
}

You can find a broader discussion here

Problem

Can you please tell me if there is a way to check if there is a internet connection in my computer when my C# program is running. For a simple example, if internet is working, I would output a message box saying `Internet is available`. else I would output a message saying, `Internet is unavailable`. Without using the library function to see if network is available (since this doesn't check internet connectivity) ``` System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() ``` Or without opening a webpage and seeing if it's return data ``` using (WebClient client = new WebClient()) htmlCode = client.DownloadString("http://google.com"); ``` Because both of these above methods don't suit my needs.

Original source

Related problems