Xel
Xel

Reputation: 571

How do I know if my computer's not connected to a network?

I'm making a LAN chat application (server and client program) and I wanted to know how can I get my own computer's IP address (for the server program) and found this question.

I used the code in my program and tested it while my computer's not connected to the internet, to a LAN or any external devices and I thought that the code will throw an exception because of that (and would mean that my computer's not connected any network)... but it didn't and instead, it returned an IP Address.

Is there a way to find out if my computer's not connected to any network?

Upvotes: 1

Views: 1817

Answers (3)

cforfun
cforfun

Reputation: 135

only way to check that if you are connected to the network at any particular point of time is to check if any of your gateways are reachable at that point of time e.g. ping all the gateway's addresses and if at least one of them respond then you are really connected: if none of them responded, then your cable still may be connected but one can't say that you are connected to network!

hope this helps! cforfun!

Upvotes: 0

Dennis Rippinger
Dennis Rippinger

Reputation: 458

With System.Net.NetworkInformation you can gather informations about your Network interfaces. So this should help you:

public Boolean isConnected()
{
    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

    foreach (NetworkInterface face in interfaces)
    {
        if (face.OperationalStatus == OperationalStatus.Up || face.OperationalStatus == OperationalStatus.Unknown)
        {
            // Internal network interfaces from VM adapters can still be connected 
            IPv4InterfaceStatistics statistics = face.GetIPv4Statistics();
            if (statistics.BytesReceived > 0 && statistics.BytesSent > 0)
            {
                // A network interface is up
                return true;
            }
        }
    }
    // No Interfaces are up
    return false;
}

Upvotes: 1

Christian.K
Christian.K

Reputation: 49280

You can subscribe to the System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged event, then evaluate the NetworkAvailabilityEventArgs.IsAvailable property.

Alternatively you can call the System.Net.NetworkInformation.GetIsNetworkAvailable() method.

Upvotes: 1

Related Questions