Как я узнаю, что мой компьютер не подключен к сети? - PullRequest
0 голосов
/ 24 февраля 2012

Я делаю приложение для чата по локальной сети (серверная и клиентская программа), и я хотел узнать, как я могу получить IP-адрес своего собственного компьютера (для серверной программы), и нашел этот вопрос .

Я использовал код в своей программе и проверил его, когда мой компьютер не подключен к Интернету, локальной сети или любым внешним устройствам, и я подумал, что из-за этого код выдаст исключение (и это будет означать, что мой компьютер не подключил любую сеть) ... но это не так, и вместо этого он вернул IP-адрес.

Есть ли способ узнать, не подключен ли мой компьютер к какой-либо сети?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Вы можете подписаться на событие System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged , а затем оценить свойство NetworkAvailabilityEventArgs.IsAvailable .

В качестве альтернативы вы можете вызвать System.Net.NetworkInformation.GetIsNetworkAvailable () метод.

1 голос
/ 24 февраля 2012

С System.Net.NetworkInformation вы можете собирать информацию о ваших сетевых интерфейсах. Так что это должно помочь вам:

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;
}
0 голосов
/ 25 февраля 2012

Единственный способ проверить, что если вы подключены к сети в любой конкретный момент времени, это проверить, доступны ли какие-либо из ваших шлюзов в этот момент времени, например, пропинговать все адреса шлюза и если хотя бы один из них отвечаеттогда вы действительно подключены: если ни один из них не ответил, то ваш кабель все еще может быть подключен, но нельзя сказать, что вы подключены к сети!

надеюсь, это поможет!cforfun!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...