Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Определение доступа к Инету Добавлено: 10.07.06 20:25  

Автор вопроса:  Sacred Phoenix | ICQ: 304238252 
Как программно определить, доступен ли в данный момент Инет. Пингование серваков не предлагать.

Private Sub NetworkAvailabilityChanged(ByVal Sender As Object, ByVal Args As Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs)
With (New System.Text.StringBuilder)
.AppendLine("""NetworkAvailabilityChanged"" event was raised with this parameters:").AppendLine()
.Append("Sender • ").AppendLine(Sender.ToString)
.Append("Args.IsNetworkAvailable • ").AppendLine(Args.IsNetworkAvailable.ToString)
MessageBox.Show(.ToString, """NetworkAvailabilityChanged"" event was raised")
End With
End Sub

Private Sub Form1_Load(ByVal Sender As System.Object, ByVal Args As System.EventArgs) Handles MyBase.Load
AddHandler My.Computer.Network.NetworkAvailabilityChanged, AddressOf NetworkAvailabilityChanged
End Sub

Два вопроса: будет ли Args.IsNetworkAvailable возвращать True, когда комп подключён не к Инету, а к какой-нить локалке? И почему событие не срабатывает при *отключении* от сети?

Заранее thx.

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 10.07.06 20:49
ну сам подумай, как ещё, если не пинговать можно 100% определить что есть инет...

Ответить

Номер ответа: 2
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #2 Добавлено: 10.07.06 22:03
ну сам подумай, как ещё, если не пинговать можно 100% определить что есть инет...
да я-т знаю, что это 100%-способ, но хотя бы в .net framework нормальные способы определение доступа к Инету должны быть.

Ответить

Номер ответа: 3
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #3 Добавлено: 10.07.06 22:53
Sacred Phoenix ещё не знает, что в ".net framework", в его системной области, нет ничего, чего не было бы в оригинальной винде; а всё, что есть, имеет те же ограничения... хм... как много предстоит ещё пережить ему...

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 10.07.06 23:09
но хотя бы в .net framework нормальные способы определение доступа к Инету должны быть.

Увы.. я тоже на эти грабли наступил.. и ничего путного сделать так и не смог.. HACKER прав, только пинг..

Ответить

Номер ответа: 5
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #5 Добавлено: 11.07.06 02:01
Пинг отстоен.

Все, кто задаётся вопросом о проверки "соединения с интернетом" (что равносильно проверке соединения с космосом, с астралом и иными вещами, совершенно не знакомыми спрашивающему, хотя он и уверен в обратном), приглашаются к прочтению Курса лечения. Три раза в лень, после еды, до полного выздоровления.

Курс лечения: http://bbs.vbstreets.ru/viewtopic.php?t=17134

Ответить

Номер ответа: 6
Автор ответа:
 Alexandr.R



Вопросов: 9
Ответов: 115
 Web-сайт: gvin.net
 Профиль | | #6
Добавлено: 11.07.06 11:57
кароче вот консольноя прога по определению инет соединения

Module Module1
    'Обьявление API-функции
    Private Declare Function InternetGetConnectedState Lib "wininet" (ByRef dwflags As Long, ByVal dwreserved As Long) As Long
    ' Определение возможных типов подключения к Интернету
    Private Enum connectstates
        lan = &H2
        modem = &H1
        proxy = &H4
        offline = &H20
        configured = &H40
        rasinstalled = &H10
    End Enum
    Sub Main()
        'Получение статуса подключения
        Dim dwflags As Long
        Dim connected As Boolean = (InternetGetConnectedState(dwflags, 0&;) <> 0)
        If connected Then
            Console.WriteLine("Connection state = yes";)
            'Отоброжение всех флагов подключения
            Console.WriteLine("Connection flags:";)
            Dim connectiontype As ConnectionState
            For Each connectiontype In System.Enum.GetValues(GetType(connectstates))
                If (connectiontype And dwflags) = connectiontype Then
                    Console.Write(" " & connectiontype.ToString())
                End If
            Next



        End If
        Console.ReadLine()
    End Sub

End Module

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 11.07.06 12:04
HACKER не прав, только перехват ошибок! :-))

З.Ы. я излечился после прочтения.. )))

Ответить

Номер ответа: 8
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #8 Добавлено: 11.07.06 12:50
2 GSerg, EROS: вы-то чего хотели? у меня vb2005 стоит целый календарный месяц по времени!!!

кароче говоря, всё это гавно, раз винда не отличает нихрена. пасиба, мы вылечились, а тему закрываю

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 12.07.06 00:38
у меня vb2005 стоит целый календарный месяц по времени

это еще ни о чем не говорит... у меня .NET 2 года стоит.. и только сейчас мне GSerg глаза открыл, что даже пинг не дает никакой гарантии, что ты в инете.. вот такие вот дела.. :((( так что выход один - перехват ошибок..

Ответить

Номер ответа: 10
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #10 Добавлено: 12.07.06 18:35
Вы чё люди, во втором фрейме есть всё для этого.

Во первых можно Му.Компутер.Нетворк.ИсАвайлбл
Но это не даёт гарантии, тк компьютер может быть подключен к сети но не иметь выхода в интернет.

Второй метод
Считываешь все имеющиеся сетевые Интерфейсы.
Ьерешь те из них которые не тип Лупбек "И" не тип туннель "И" оператионал статус равен ОператионалСтатус.АП

Привет.

У остальных смотришь

Ответить

Номер ответа: 11
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #11 Добавлено: 12.07.06 18:39
Не посмотрел вопросы
будет ли Args.IsNetworkAvailable возвращать True, когда комп подключён не к Инету, а к какой-нить локалке?

Да будет
И почему событие не срабатывает при *отключении* от сети?

Какое событие ?
Можно наблюдать Нетворк адресс чейндж и нетворк Авейлабилити Чейндж

Ответить

Номер ответа: 12
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #12 Добавлено: 12.07.06 18:45
Imports System.Net.NetworkInformation


Private Function connected() As Boolean
    Dim netinterface As NetworkInterface
    For Each netinterface In NetworkInterface.GetAllNetworkInterfaces()

      Console.WriteLine(netinterface.Name + " " + netinterface.OperationalStatus.ToString + " " + netinterface.NetworkInterfaceType.ToString)

      If netinterface.NetworkInterfaceType <> NetworkInterfaceType.Loopback AndAlso _
         netinterface.NetworkInterfaceType <> NetworkInterfaceType.Tunnel AndAlso _
         netinterface.OperationalStatus = OperationalStatus.Up Then
        Return True
      End If
    Next
    Return False
  End Function

Ответить

Номер ответа: 13
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #13 Добавлено: 12.07.06 20:19
:( всё это может обдурить...

берём подключаемся к инету, закрываем фаером всё для всех...

99% ваши варианты будут говорить что инет есть...
хотя на самом деле фаервол ничего пускать небудет...

т.е. инет и есть, и вто же время он недоступен, и им нельзя пользоваться в своей программе...

а пинг есть пинг...
да долго, за то уверенно...

Ответить

Номер ответа: 14
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #14 Добавлено: 12.07.06 23:36
блин, ну чё за челы, я ж написал, тему закрыл)))
2 all: мда, действительно, под "Интернетом" мона многое понять. Когда надо считать деньги, которые капают, когда сидишь подключённым, мона было бы юзать код student-uni, ну а если прога должна выполнять опр. задачу (напр., проверять почту), наличие "Интернета" определяется доступностью сервиса, в данном случае доступом к xxx.mail.ru на порт yy.

Ответить

Номер ответа: 15
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 13.07.06 00:34
2 GSerg

Пинг отстоен.


Нашёл время да почитал твое лекарство...
Всё свелось к отлову ошибок, с этим я согласен, это правельно. Но например задание стоит просто мониторить подключение к инету, т.е. не подключаться никуда конкретно, тут придётся подключаться к всяким www.com *.gov итп... пускай не пингом, просто запросом на 80-ый, но всё же...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам