Проверка доступности сайта

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Проверка доступности сайта

Сообщение MIT » 12.01.2009 (Пн) 22:45

Раньше для меня данный вопрос стоял несколько иначе - "проверка подключения к интернету", но немного поразмыслив и почитав соответствующей информации понял, насколько данная формулировка неверна и, по большому счету, бессмыслена. Поэтому задаю вопрос по другому: как проверить доступность сайта? В принципе, сложного-то ничего нет - посылаешь запрос, если ответ получен, значит "ты в интернете". Но тут имеется некоторая проблема - траффик. Если делать запрос к странице, то ответ будет объемный - страница. А как сделать запрос не на страницу а на севрер (т.е. на DNS)? Или, может быть, есть более правильный вариант решения данной задачи?

З.Ы. Возможно я до сих пор не до конца оперирую данной информацией, так что, если я не прав - поправьте.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Проверка доступности сайта

Сообщение iGrok » 12.01.2009 (Пн) 23:28

ping. По трафику выйдет минимум.
label:
cli
jmp label

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 12.01.2009 (Пн) 23:31

А есть пример/инструкция или какой-то материал по теме?
Не, искать мне не в падлу, просто возможно что он тут где-нибудь неподалеку лежит, а я об этом не знаю.


added:
2iGrok - Спасибо.
Вывод один: Object Browser + MSDN = руллллеззз.

added2:
MSDN писал(а):Метод Ping не является надежным методом для определения доступности удаленного компьютера: проверяемый порт конечного компьютера может быть выключен или же запрос проверки связи может блокироваться межсетевым экраном или маршрутизатором.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Проверка доступности сайта

Сообщение Joo » 13.01.2009 (Вт) 13:13

Конектись тупо на нужный порт, например 80 (www) но не чего не запрашивай, если конект прошел то ты в инете (нужной сети)
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Проверка доступности сайта

Сообщение iGrok » 13.01.2009 (Вт) 14:13

MIT писал(а):added2:
MSDN писал(а):Метод Ping не является надежным методом для определения доступности удаленного компьютера: проверяемый порт конечного компьютера может быть выключен или же запрос проверки связи может блокироваться межсетевым экраном или маршрутизатором.

Тебе нужно определять доступность какого-то конкретного ресурса, или любого?
Большинство открытых сервисов в интернете открыты на пинг.
В противном случае - да. Коннект на 80й порт.
label:
cli
jmp label

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 13.01.2009 (Вт) 14:27

А как насчет My.Computer.Network.IsAvailable ? Действительно ли это чудо-функция работает?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Проверка доступности сайта

Сообщение Sebas » 13.01.2009 (Вт) 19:12

MIT писал(а):Раньше для меня данный вопрос стоял несколько иначе - "проверка подключения к интернету", но немного поразмыслив и почитав соответствующей информации понял, насколько данная формулировка неверна и, по большому счету, бессмыслена. Поэтому задаю вопрос по другому: как проверить доступность сайта? В принципе, сложного-то ничего нет - посылаешь запрос, если ответ получен, значит "ты в интернете". Но тут имеется некоторая проблема - траффик. Если делать запрос к странице, то ответ будет объемный - страница. А как сделать запрос не на страницу а на севрер (т.е. на DNS)? Или, может быть, есть более правильный вариант решения данной задачи?

З.Ы. Возможно я до сих пор не до конца оперирую данной информацией, так что, если я не прав - поправьте.



Нужно в запрос добавить хидер (не помню какой), который говорит. Верни мне только размер ресурса или чтото типа того.
соттвественно будешь иметь код ошибки ежели что)

MIT писал(а):А как насчет My.Computer.Network.IsAvailable ? Действительно ли это чудо-функция работает?


Это говорит лишь о том, что комп имеет хотя бы один активный сетевой интерфейс.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Проверка доступности сайта

Сообщение Williams » 13.01.2009 (Вт) 19:26

Sebas писал(а):Нужно в запрос добавить хидер (не помню какой), который говорит. Верни мне только размер ресурса или чтото типа того.
соттвественно будешь иметь код ошибки ежели что).


Раз уж на то пошло, достаточно просто опросить ресурс методом HEAD.
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 15.01.2009 (Чт) 18:34

Williams писал(а):просто опросить ресурс методом HEAD
К сожалению, мне это ни о чем не говорит. Просветите, плиз.

Кстати, немного "побаловался" с пингом. Результат, в общем, хороший, но уменя появилась интересная идея:
Если наличие активного сетевого подключения не гарантирует доступность определенного адреса (ну, или проще говоря, "интернета"), то как на счет отлавливания событий подключения/отключения к/от сети и проверке именно в этот момент доступности ресурса (а не по таймеру, например)?
По идее должно сработать: подключилась сеть - чекаем на доступность, ответили - значит мы "в интернете", нет - значит не одна из доступных сетей не обеспечивает доступ к сайту. При отключении сети - аналогично.
Может я чего-то не доглядел - поправьте, если что.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Проверка доступности сайта

Сообщение Nord777 » 15.01.2009 (Чт) 19:26

нет - значит не одна из доступных сетей не обеспечивает доступ к сайту
Или сайт упал. :)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 15.01.2009 (Чт) 19:51

Ну или да. Только для меня не важна причина недоступности сайта (хотя это весьма интересно, но все же), мне нужен факт - доступен: да/нет.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Проверка доступности сайта

Сообщение Nord777 » 15.01.2009 (Чт) 20:57

Я это всё к тому, что если сайт упал - прога решит, что нет интернета.
Проверять надо несколько сайтов. И то не гарантия.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 15.01.2009 (Чт) 21:38

В конкретно этом случае от интернета мне нужен только один предопределенный сайт. А впринципе, можно проверять Google.com, Microsoft.com, Yandex.ru (и еще какие-нибудь) - вряд ли они упадут вместе и разом.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Проверка доступности сайта

Сообщение Nord777 » 15.01.2009 (Чт) 22:32

А как сделать запрос не на страницу а на севрер (т.е. на DNS)?

Dim IpHe As System.Net.IPHostEntry
IpHe = System.Net.Dns.GetHostEntry("www.ya.ru")
а дальше сам сообразишь.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 16.01.2009 (Пт) 15:20

Nord777 писал(а):дальше сам сообразишь.
Если хост правильный и доступный - возвращается IP, алиасы и т.п. иначе - исключение. Правильно сообразил?

То есть, обобщив вышесказанное, можно написать следующий код:
Код: Выделить всё
        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
который с большой долей вероятности покажет доступность определенного ресурса.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Проверка доступности сайта

Сообщение Nord777 » 16.01.2009 (Пт) 20:49

Если хост правильный и доступный - возвращается IP, алиасы и т.п. иначе - исключение. Правильно сообразил?
Правильно.

который с большой долей вероятности покажет доступность определенного ресурса.
Не совсем.
Для чего тебе нужно в данном случае пинговать не по адресу, а по доменному имени?
(Хотя по большому счету пинговать можно только по ip-адресу. просто здесь функция Ping() делает за тебя лишнюю работу)
И после этого опять посылать DNS-запрос?
Чтобы ты точно понял о чем идет речь, поясню, что делает эта строка:
Код: Выделить всё
My.Computer.Network.Ping("www.ya.ru", 2000)
На DNS-сервер(НЕ на ya.ru) посылается запрос на преобразования человеко-понятного имени ("www.ya.ru") в Ip-адрес( 213.180.204.8 ),
и только потом, по полученному адресу посылается пинг.
А что будет в твоем случае, когда DNS-запрос прокатит, но сервер на пинг не ответит?
А если прокатит - то второй запрос(GetHostEntry("www.ya.ru")) вообще неуместен
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Проверка доступности сайта

Сообщение Williams » 16.01.2009 (Пт) 21:54

DNS может быть кэширован, а пинг наоборот блокирован, например файрволлом ) Так что наверное не стоит изобретать велосипед, а использовать стандартный метод - закачка странички. Найти пару небольших, со стабильными серверами (а еще лучше свой серв пробивать)
И вы думаете, что вас оставят в живых после прочтения этого поста?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Проверка доступности сайта

Сообщение Nord777 » 16.01.2009 (Пт) 22:16

DNS может быть кэширован
Ну да. Про это я не подумал.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 17.01.2009 (Сб) 15:07

Williams писал(а):DNS может быть кэширован
То-то программа у меня по таймеру читает 59.4 кб.
Nord777 писал(а):А если прокатит - то второй запрос(GetHostEntry("www.ya.ru")) вообще неуместен
То есть, если делать, то делать надо наоборот?
Williams писал(а):Так что наверное не стоит изобретать велосипед, а использовать стандартный метод - закачка странички. Найти пару небольших, со стабильными серверами (а еще лучше свой серв пробивать)
Понятно... А как на счет моей идеи (изложенной выше)? Реально ли отследить подобное системное событие?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Проверка доступности сайта

Сообщение iGrok » 17.01.2009 (Сб) 15:23

Так. MIT. Ты всё-таки чего хочешь добиться?
Чтобы программа показывала юзеру, что он сейчас в интернете? Зачем?
Или чтобы программа могла узнать, доступен ли сейчас какой-то сайт?

Если доступность сайта - тогда коннект на 80й порт или пинг.
label:
cli
jmp label

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Проверка доступности сайта

Сообщение Williams » 17.01.2009 (Сб) 15:27

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


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

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Проверка доступности сайта

Сообщение iGrok » 17.01.2009 (Сб) 18:24

Williams писал(а):Если же наличие "интернета", то надо разные проверять.

Угу. И не забыть при этом, что что-то может быть заблокировано администратором сети..
А что-то просто закрыто на пинг..
Или, к примеру, инет работает только через прокси..
label:
cli
jmp label

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Проверка доступности сайта

Сообщение FaKk2 » 22.01.2009 (Чт) 9:17

MIT писал(а):В конкретно этом случае от интернета мне нужен только один предопределенный сайт. А впринципе, можно проверять Google.com, Microsoft.com, Yandex.ru (и еще какие-нибудь) - вряд ли они упадут вместе и разом.


Я всё ждал, когда же кто-то упомянет сайт мелкософта. Так вот, домен microsoft.com не отвечает на пинги :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Проверка доступности сайта

Сообщение Sebas » 22.01.2009 (Чт) 9:26

прочитал тему и не понимаю. а задача какая? Ктонить технически может сформулировать?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 22.01.2009 (Чт) 11:56

Формулирую: определить доступность определенного сайта в настоящее время
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Проверка доступности сайта

Сообщение Ramzes » 22.01.2009 (Чт) 12:09

с какой целью?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 22.01.2009 (Чт) 12:15

Если это так важно, то что бы грузить с него картинки.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Проверка доступности сайта

Сообщение Ramzes » 22.01.2009 (Чт) 12:42

а если сайт недоступен, то ты картинки откуда берешь?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проверка доступности сайта

Сообщение MIT » 25.01.2009 (Вс) 17:25

Система такая: есть локальная база данных с картинками; при запросе картинки сначала идет обработка базы, если нет в базе - грузим с сайта, если сайт не доступен, показываем, что картинки нет и загрузить ее неоткуда.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Проверка доступности сайта

Сообщение Ramzes » 25.01.2009 (Вс) 20:34

ну, та и пытайся загрузить, зачем тебе доступность сайта проверять?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

    TopList