2012-01-26 1 views
4

Я работаю над приложением Winforms и использую C# в качестве языка разработки. В одном месте мне нужно отправить запрос на URL-адрес и получить обратную связь.. Net WebException, чтобы проверить, имеет ли локальный компьютер доступ к Интернету.

Я использую свой код в блоке catch catch, и я поймаю WebException. Я заметил, что WebException происходит по двум причинам.

(1), когда URL я вошел неправильно (URL-адрес, который не существует)

(2) Когда нет подключения к Интернету

Так что все в порядке Если я ловлю WebException в ситуация, когда URL-адрес правильный, чтобы проверить, что на локальной машине нет подключения к Интернету. (Мне нужно проверить, существует ли интернет-соединение или нет, чтобы продолжить следующий этап)

Может ли кто-нибудь подтвердить, что мое предложение верное или если не так, почему? Благодаря inadvance

+0

http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx это может помочь –

+0

, какое решение вы в конечном итоге с? – bryanmac

ответ

2

Вы не можете проверить подключение к Интернету, пытаясь подключиться к URL-адресу. Вы не можете сказать между плохой связью или недоступным сервером.

Существует win32 API в WinInet - см check whether Internet connection is available with C#

+0

Спасибо bryanmac .. Я посмотрю. – JibW

+0

Примечание. Я удалил рекомендацию о dns - ее надежность не была, поскольку разрешение кэшировано на машине, поэтому оно не является надежным – bryanmac

0

Я использовал эту функцию (в VB .NET), чтобы знать, если Интернет доступен:

Public Function HasInternet() As Boolean 
    Dim response As Boolean = False 
    Try 
     response = My.Computer.Network.Ping("www.google.com") 
     If Not response Then 
      'Try another one 
      response = My.Computer.Network.Ping("www.yahoo.com") 
     End If 
    Catch ex As Exception 
     'Catch the error or leave it blank for returning False 
    End Try 
    Return response 
End Function 

Единственная проблема, если google.com и просит yahoo.com запорного aswering Пин, он сообщит нет соединения с интернетом.

+0

Спасибо Ragetzaz .. !!! – JibW

+1

Обратите внимание, что многие сайты/маршрутизаторы и т. Д. Блокируют ICMP. Например, с моей текущей машины, на которую я добавляю этот комментарий, у меня есть подключение к Интернету, но я не могу пинговать Google или Yahoo. – bryanmac

Смежные вопросы