Как я могу сказать, был ли сетевой кабель отключен?

Вам необходимо обновлять свой токен авторизации каждые 12 часов, попробуйте:

$(aws ecr get-login --no-include-email --region us-east-1) - изменить регион в соответствии с вашей конфигурацией

6
задан Peter Perháč 20 May 2009 в 13:04
поделиться

6 ответов

Вы можете использовать IsNetworkAlive (). Хотя технически он не проверяет состояние соединения, он, вероятно, лучше, поскольку он также может обнаруживать беспроводное и коммутируемое соединение. Вот пример:

using System.Runtime.InteropServices;
class Program
{
    [DllImport("sensapi.dll")]
    static extern bool IsNetworkAlive(out int flags);

    static void Main(string[] args)
    {
        int flags;
        bool connected = IsNetworkAlive(out flags);

    }
}

Параметр flags возвращает, подключено ли соединение к Интернету или только к локальной сети. Я не уверен на 100%, откуда он знает, но готов поспорить, он просто проверяет, установлен ли шлюз по умолчанию.

6
ответ дан 8 December 2019 в 13:48
поделиться

По моему скромному мнению, нет точного способа отличить отключенную сеть от отключенного кабеля. И даже если есть способ, есть и способ его обойти.

Предположим, у вас есть решение, и давайте рассмотрим некоторые ситуации:

  • Нет сетевого трафика, кабель не отключен от компьютер: он может быть отключен на другом конце.
  • Нет сетевого трафика, кабель отключен: но так было всегда, ноутбук подключен через Wi-Fi, который в настоящий момент не работает.
  • Есть несколько сетевых интерфейсов, только тот, который подключен к WAN, не работает: должно ли ваше приложение работать?
  • Сеть фактически не работает, в том смысле, в котором вы имеете в виду: кому-то удалось постоянно перезагружать маршрутизатор для использования вашего приложения .
4
ответ дан 8 December 2019 в 13:48
поделиться

Некоторые сетевые драйверы могут обнаружить это. Однако вам потребуется использовать неуправляемый код для доступа к ним из C # (что может быть очень сложно / невозможно), и решение может быть ненадежным для всех сетевых адаптеров.

2
ответ дан 8 December 2019 в 13:48
поделиться

Сетевая карта сообщит об этом как о состоянии. Такие инструменты, как ethtool , могут отображать это ( Link up ), но это доступно только для Linux / Unix.

Если вы можете перечислить установленные сетевые карты с помощью Windows API, я Я уверен, что где-то там вы найдете флаг для "соединения".

1
ответ дан 8 December 2019 в 13:48
поделиться

Если бы я действительно хотел использовать ваше приложение и будет ли оно работать, зависит от чего-то вроде этого, я всегда смогу найти способ обмануть ваше приложение. Вы уверены, что нет лучшего решения?

0
ответ дан 8 December 2019 в 13:48
поделиться

Как насчет проверки связи шлюза по умолчанию?

Здесь есть код , который получает шлюз по умолчанию из реестра.

0
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: