22 октября 2015
Кравченко Виктор

Как проверить подключение к Интернету

Полезные функции Visual Studio Windows Desktop .NET
01 На заметку:
Автором написана небольшая бесплатная утилита с открытым исходным кодом, позволяющая мониторить состояние Интернета — Codius InternetChecker v1.0 - простой логгер состояния интернета
02

К сожалению из всех нативных (предусмотренных системой) способов ни один не является однозначным идентификатором присутствия Интернета. Имеются ввиду способы с использованием:

03
  • [a href="https://msdn.microsoft.com/en-us/library/vstudio/ms127886(v=vs.110).aspx"]My.Computer.Network.Ping(hostNameOrAddress)[/a] — метод из десяти подряд идущих обращений может в трех случаях вернуть значение False — это неприемлемо. При частом обращении к методу выявлено критическое поведение — синий экран смерти, перезагрузка.
  • обращение через функцию [a href="https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa384702(v=vs.85).aspx"]InternetGetConnectedState[/a] покажет лишь правильно настроенную сеть — так что в локальной сети функция вернет True.
04

Поэтому единственно верным способом, гарантированно отображающим реальную ситуацию, будет периодическая отправка запросов на какой-либо популярный сервер (www.google.ru, www.ya.ru и т.д.), вероятность «отваливания» которого очень низка — и при получении от него ответа можно будет судить о наличии интернета:

05 VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Function ПолучитьОтветСервера(url As String) As Boolean
'' Приводит к синему экрану смерти через время 'If flagFirstTime Then ' If My.Computer.Network.Ping("www.ya.ru", 5000) Then ' Return True ' Else ' Return False ' End If 'End If
Try Dim wRequest As HttpWebRequest = HttpWebRequest.Create(url) Dim wResponse As HttpWebResponse = wRequest.GetResponse wResponse.Close() Return True Catch ex As Exception Return False End Try End Function
06

Использование:

07 VB.NET
1
2
Dim flag As Boolean = ПолучитьОтветСервера("www.ya.ru") MsgBox(If(flag, "Интернет есть", "Интернета нет"))
09

Похожие запросы:

  • Проверка соединения с интернетом — Visual Basic .NET
  • Проверка подключения к Интернету
  • Как проверить есть доступ к Интернету или нет
  • Как проверить, подключен компьютер к интернет или нет?
  • Проверка статуса Интернет подключения — Visual Basic .NET
  • Как проверить подключение к интернет?
comments powered by HyperComments