Страница: 1 | 2 |
Вопрос: Определение доступа к Инету
Добавлено: 10.07.06 20:25
Автор вопроса: Sacred Phoenix | ICQ: 304238252
Как программно определить, доступен ли в данный момент Инет. Пингование серваков не предлагать.
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
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 10.07.06 22:53
Sacred Phoenix ещё не знает, что в ".net framework", в его системной области, нет ничего, чего не было бы в оригинальной винде; а всё, что есть, имеет те же ограничения... хм... как много предстоит ещё пережить ему...
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 10.07.06 23:09
Увы.. я тоже на эти грабли наступил.. и ничего путного сделать так и не смог.. 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-сайт:
Профиль | | #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
это еще ни о чем не говорит... у меня .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
Не посмотрел вопросы
Да будет
Какое событие ?
Можно наблюдать Нетворк адресс чейндж и нетворк Авейлабилити Чейндж
Номер ответа: 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-ый, но всё же...