MSDN писал(а):Метод Ping не является надежным методом для определения доступности удаленного компьютера: проверяемый порт конечного компьютера может быть выключен или же запрос проверки связи может блокироваться межсетевым экраном или маршрутизатором.
MIT писал(а):added2:MSDN писал(а):Метод Ping не является надежным методом для определения доступности удаленного компьютера: проверяемый порт конечного компьютера может быть выключен или же запрос проверки связи может блокироваться межсетевым экраном или маршрутизатором.
MIT писал(а):Раньше для меня данный вопрос стоял несколько иначе - "проверка подключения к интернету", но немного поразмыслив и почитав соответствующей информации понял, насколько данная формулировка неверна и, по большому счету, бессмыслена. Поэтому задаю вопрос по другому: как проверить доступность сайта? В принципе, сложного-то ничего нет - посылаешь запрос, если ответ получен, значит "ты в интернете". Но тут имеется некоторая проблема - траффик. Если делать запрос к странице, то ответ будет объемный - страница. А как сделать запрос не на страницу а на севрер (т.е. на DNS)? Или, может быть, есть более правильный вариант решения данной задачи?
З.Ы. Возможно я до сих пор не до конца оперирую данной информацией, так что, если я не прав - поправьте.
MIT писал(а):А как насчет My.Computer.Network.IsAvailable ? Действительно ли это чудо-функция работает?
Sebas писал(а):Нужно в запрос добавить хидер (не помню какой), который говорит. Верни мне только размер ресурса или чтото типа того.
соттвественно будешь иметь код ошибки ежели что).
К сожалению, мне это ни о чем не говорит. Просветите, плиз.Williams писал(а):просто опросить ресурс методом HEAD
Или сайт упал.нет - значит не одна из доступных сетей не обеспечивает доступ к сайту
А как сделать запрос не на страницу а на севрер (т.е. на DNS)?
а дальше сам сообразишь.Dim IpHe As System.Net.IPHostEntry
IpHe = System.Net.Dns.GetHostEntry("www.ya.ru")
Если хост правильный и доступный - возвращается IP, алиасы и т.п. иначе - исключение. Правильно сообразил?Nord777 писал(а):дальше сам сообразишь.
Try
If Not My.Computer.Network.Ping("www.ya.ru", 2000) Then System.Net.Dns.GetHostEntry("www.ya.ru")
e.Result = True
Catch ex As Exception
e.Result = False
End Try
Правильно.Если хост правильный и доступный - возвращается IP, алиасы и т.п. иначе - исключение. Правильно сообразил?
Не совсем.который с большой долей вероятности покажет доступность определенного ресурса.
My.Computer.Network.Ping("www.ya.ru", 2000)
Ну да. Про это я не подумал.DNS может быть кэширован
То-то программа у меня по таймеру читает 59.4 кб.Williams писал(а):DNS может быть кэширован
То есть, если делать, то делать надо наоборот?Nord777 писал(а):А если прокатит - то второй запрос(GetHostEntry("www.ya.ru")) вообще неуместен
Понятно... А как на счет моей идеи (изложенной выше)? Реально ли отследить подобное системное событие?Williams писал(а):Так что наверное не стоит изобретать велосипед, а использовать стандартный метод - закачка странички. Найти пару небольших, со стабильными серверами (а еще лучше свой серв пробивать)
iGrok писал(а):Так. MIT. Ты всё-таки чего хочешь добиться?
Чтобы программа показывала юзеру, что он сейчас в интернете? Зачем?
Или чтобы программа могла узнать, доступен ли сейчас какой-то сайт?
Если доступность сайта - тогда коннект на 80й порт или пинг.
Dim headers As WebHeaderCollection = Nothing
Dim response As HttpWebResponse = Nothing
Dim request As HttpWebRequest = TryCast(WebRequest.Create(url), HttpWebRequest)
request.Method = "HEAD"
response = TryCast(request.GetResponse(), HttpWebResponse)
headers = response.Headers
Williams писал(а):Если же наличие "интернета", то надо разные проверять.
MIT писал(а):В конкретно этом случае от интернета мне нужен только один предопределенный сайт. А впринципе, можно проверять Google.com, Microsoft.com, Yandex.ru (и еще какие-нибудь) - вряд ли они упадут вместе и разом.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28