#c_sharp #net
Подскажите какими средствами можно проверить подключение компьютера к сети интернет.
Ответы
Ответ 1
Или например таким классом можно воспользоваться. class InernetChecker { [DllImport("WININET", CharSet=CharSet.Auto)] static extern bool InternetGetConnectedState( ref InternetConnectionState lpdwFlags, int dwReserved); [Flags] enum InternetConnectionState: int { INTERNET_CONNECTION_MODEM = 0x1, INTERNET_CONNECTION_LAN = 0x2, INTERNET_CONNECTION_PROXY = 0x4, INTERNET_RAS_INSTALLED = 0x10, INTERNET_CONNECTION_OFFLINE = 0x20, INTERNET_CONNECTION_CONFIGURED = 0x40 } static void Main() { InternetConnectionState flags = 0; Console.WriteLine( "InternetGetConnectedState : {0} - {1}", (InternetGetConnectedState(ref flags, 0)?"ONLINE":"OFFLINE"), flags ); Console.ReadLine(); } }Ответ 2
Например, попытаться обратиться с помощью WebClient к какому-нибудь адресу: public static bool CheckForInternetConnection() { try { using (var client = new WebClient()) using (var stream = client.OpenRead("http://www.google.com")) { return true; } } catch (WebException) { return false; } } Или использовать пинг, как менее потребляющий трафик способ: public static bool CheckForInternetConnection() { var ping = new Ping(); String host = "google.com"; byte[] buffer = new byte[32]; int timeout = 1000; var options = new PingOptions(); try { var reply = ping.Send(host, timeout, buffer, options); return reply.Status == IPStatus.Success; } catch (PingException) { return false; } } ИсточникОтвет 3
Возможно System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() даст нужный результат, так же список доступных соидинений можно посмотреть тут System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Комментариев нет:
Отправить комментарий