Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Распределённые приложения и сеть > WebRequest.Timeout |
Автор: Kefir 9.6.2007, 10:07 | ||
есть программка, где надо постонно проверять наличие интернета. делаю очень просто - через WebRequest посылаю запрос на нужный сайт. Коли ответ есть - значит и интернет есть. Код:
вот. всё вроде убийственно просто и должно работать. но по непонятным причинам в одном месте с вифи интернетом оно даёт сбой и возвращает периодически false. из-за этого отменяется синхронизация БД и файлов программы с сервером. Что самое обидное - у меня такое впечатление, что он просто не ждёт Timeout и просто не успевает получить ответ. Ставил таймаут и на 40 секунд - никакой разницы. Доки читал - вроде написано что таймаут работает только если запрос синзронный - GetResponse вроде именно синхронная функция. Так вот собственно что надо - или заставить нормально работать таймаут у запроса, или сделать как-нибудь по-другому. Предложения? Идеи? |
Автор: Kvazilol 10.6.2007, 01:38 | ||
http://www.codeproject.com/cs/internet/internetconnection_status.asp вроде оно?
|
Автор: Kefir 10.6.2007, 08:58 |
а какая собственно принципиальная разница между моим кодом и тем что привёл ты? (я в танке) |
Автор: v2v 10.6.2007, 10:17 |
Я так понял тебе инет нужен для синхронизации БД с сервером? Ну так а что за сервер? ТЫ от него посылки тоже через ВебРеспонс получаешь? или как то подругому, так и проверяй наличия соединения с сервером по другому. |
Автор: Kefir 10.6.2007, 11:13 |
v2v, инет нужен НЕ ТОЛЬКО для синхронизации БД. проверка должна в принципе подтверждать что сайт www.company_site.com отвечает. Всё. Проблема в том, что таймаут почему-то не пашет. я вообще не понимаю в чём суть твоего поста - я про фому, ты про ерёму. что значит проверять по другому? ну напиши как. и какая разница какой сервер? я же говорю - надо проверять есть интернет или нет. |
Автор: stab 10.6.2007, 11:20 |
false оно может вернуть если произошло исключение. закрадывается вопрос: а что за исключение на том компе происходит? |
Автор: Kefir 11.6.2007, 10:23 |
гм... забыл совсем... мне в общем к терминалу надо съездить и в логе глянуть для полной уверенности. как только так сразу отпишусь. |
Автор: stab 11.6.2007, 12:51 |
отпишись, мне уже самому интересно ![]() |
Автор: Kefir 11.6.2007, 17:52 |
вот сижу у терминала. исключение: System.Net.WebException: The remote server returned an error: (404) Not Found. at System.Net.HttpWebRequest.GetResponse() at ERD.AdminForm.IsConnectionAvailable(String URL) in xxx:line yyy скажу так - очень странно это. ибо урл всё время один и тот же. оно постоянно в онлайне. это раз. два. такая проблема только на одном терминале (интернет - вифишка - как и везде). работает инет отрадно, но, видно, что-то невпорядке. спешу заметить - сайт в оффлайн не уходит и уходить не собирается. а теперь вопрос - мысли и соображения по этому поводу? единственное, что приходит в голову - посылать запрос не один раз, а несколько. хотя, коненчно, очень странное решение (как и сама проблема). есть ли что-нибудь покрасивее (в плане выхода из этой ситуёвины)? |
Автор: tol05 11.6.2007, 18:35 |
вот еще http://www.codeproject.com/cs/internet/Crawler.asp?df=100&forumid=281712&exp=0&select=1773278 можешь почитать |
Автор: stab 12.6.2007, 07:28 |
мистика. прокси может какой затесался? модификации LSP? кстати, была когда-то давно схожая задача, и ввиду того, что интернет не надёжная система, я наличие интернета проверял по нескольким урлам последовательно. может и тебе использовать пару-тройку урлов.. |
Автор: Kefir 12.6.2007, 10:26 |
tol05, эмм... а в чём, собственно, фишка? я может не понял - а что там смотреть? Там (почти) точно также использован WebRequest. И написан класс MyWebRequest для обхода синхронности GetResponse. Или я чего-то там не углядел?.. cully, странно то именно то, что 404 возвращается абсолютно хаотично - такое впечатление, то функция содержит только return rand()%2 ![]() В общем, пока помечаю вопрос решённым. Проблема ясна. Обязательно отпишусь. |
Автор: stab 12.6.2007, 11:35 |
Kefir, из IE пробовал этот урл долбить с такой же периодичностью? |
Автор: Kefir 12.6.2007, 19:22 |
нет, не пробовал. в общем после внедрения технологии множественного запроса (на три разных урла) всё стало работать нормально. проверяет хорошо. пока сбоев не замечено. |