Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка подключения к Интернету 
V
    Опции темы
vdsteff
Дата 24.3.2011, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 23.3.2011

Репутация: нет
Всего: нет



Имеется следующий код:

Код
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            If IsConnectionAvailable() Then
            ToolStripStatusLabel3.Text = "Соединение установлено"
        Else
            ToolStripStatusLabel3.Text = "Не удалось установить соединение"
        End If
    End Sub

Public Function IsConnectionAvailable() As Boolean
        Dim objUrl As New System.Uri("http://www.google.ru")
        Dim objWebReq As System.Net.WebRequest
        objWebReq = System.Net.WebRequest.Create(objUrl)
        Dim objResp As System.Net.WebResponse
        Try
            objResp = objWebReq.GetResponse
            objResp.Close()
            objWebReq = Nothing
            Return True
        Catch ex As Exception
            objResp.Close()
            objWebReq = Nothing
            Return False
        End Try
    End Function


Код не мой, взял как пример, чтобы посмотреть что да как работает. Как видно из кода при успешном подключении к "http://www.google.ru" в статус баре появится сообщение "Соединение установлено", проверял, работает, но если интернет отключен, приложение попросту не запускается, и не выдает сообщения "Не удалось установить соединение", хотя соотвествующая проверка есть.  Как это исправить? или может быть есть способ проверки подключения без использования сайта?

Также Visual Studio 2010 ругается здесь: objResp.Close() - Переменная "objResp" используется до присвоения ей значения. Во время выполнения может произойти исключение при ссылке на значение NULL, но приложение запускает

Помогите пжалуста разобраться. 
PM MAIL   Вверх
diadiavova
Дата 24.3.2011, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(vdsteff @  24.3.2011,  05:07 Найти цитируемый пост)
 но если интернет отключен, приложение попросту не запускается, и не выдает сообщения "Не удалось установить соединение", хотя соотвествующая проверка есть.  Как это исправить?

Скорей всего дело как раз в этом
Цитата(vdsteff @  24.3.2011,  05:07 Найти цитируемый пост)
Также Visual Studio 2010 ругается здесь: objResp.Close() - Переменная "objResp" используется до присвоения ей значения. Во время выполнения может произойти исключение при ссылке на значение NULL

Когда приложение запускается до блока catch дело просто не доходит, но если соединения нет, то ты получаешь новое исключение. Попробуй заменить в блоке catch
Код

objResp.Close()

На 
Код

If ojResp IsNot Nothing Then
    objResp.Close()
End If


Цитата(vdsteff @  24.3.2011,  05:07 Найти цитируемый пост)
 или может быть есть способ проверки подключения без использования сайта?

Вообще-то доступность ресурса обычно проверяют с помощью метода Microsoft.VisualBasic.Devices.Network.Ping
Или у класса System.Net.NetworkInformation.Ping тоже есть для этого методы.


Это сообщение отредактировал(а) diadiavova - 24.3.2011, 09:57


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vdsteff
Дата 24.3.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 23.3.2011

Репутация: нет
Всего: нет



замена кода не помогла, при отсутсвии подключения приложение не грузится вообще.
А реально существующий код дополнить timeout-ом обращения для проверки подключения и в случае если например 10 секунд подключение не просходит все равно загружать прилоложение?
PM MAIL   Вверх
500mhz
Дата 24.3.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



бред какойто

есть GetInetConnectionStatus
или сделать gethostbyname


M
diadiavova
Выбирай выражения. И уж если отвечаешь, то пиши что-нибудь более вразумительное.


Это сообщение отредактировал(а) diadiavova - 24.3.2011, 11:02


--------------------

PM MAIL ICQ   Вверх
diadiavova
Дата 24.3.2011, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(vdsteff @  24.3.2011,  10:30 Найти цитируемый пост)
замена кода не помогла

Ну не знаю, сейчас с таким кодом послал запрос на несуществующий адрес, все сработало. С отключенной сетью не проверял, но доступна сеть или нет можно проверить с помощью
Код

My.Computer.Network.IsAvailable

А доступ к конкретному ресурсу все-таки проверяй с помощью пинга.




--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Freyzer
Дата 24.3.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


обаятельный нахал
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 12.12.2009
Где: на Марсе

Репутация: нет
Всего: 1



Цитата(500mhz @ 24.3.2011,  10:30)
бред какойто

есть GetInetConnectionStatus
или сделать gethostbyname

Вобще-то C# и VB.NET имеют отличия 


--------------------
Advocatus Dei smile. Advocatus Diaboli smileAjo!   
PM MAIL   Вверх
vdsteff
Дата 25.3.2011, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 23.3.2011

Репутация: нет
Всего: нет



спасибо за ответы, решил проблемку немного иначе:

Код
 If My.Computer.Network.Ping("www.google.ru") = True Then
            ToolStripStatusLabel3.Text = "Соединение установлено"
        Else
            ToolStripStatusLabel3.Text = "Не удалось установить соединение"
        End If

PM MAIL   Вверх
diadiavova
Дата 25.3.2011, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(vdsteff @  25.3.2011,  08:07 Найти цитируемый пост)
решил проблемку немного иначе:

Почему иначе? Разве это не то, о чем я сразу сказал? smile 
Цитата(diadiavova @  24.3.2011,  09:48 Найти цитируемый пост)
Вообще-то доступность ресурса обычно проверяют с помощью метода Microsoft.VisualBasic.Devices.Network.Ping
Или у класса System.Net.NetworkInformation.Ping тоже есть для этого методы.

My.Computer.Network Как раз и возваращает объект Microsoft.VisualBasic.Devices.Network
Кроме того, не забывай о том, что если тебе нужно проверить наличие подключения, то пинговать конкретный сервер не всегда хорошо, поскольку к сети компьютер может быть подключен, а сервер необязательно всегда доступен.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0800 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.