powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как проверить есть ли интернет
4 сообщений из 4, страница 1 из 1
Как проверить есть ли интернет
    #37786564
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вступ:
Бросили оптоволоконный кабель 5км с станции ко мне домой (поближе провайдеров нет). Из дома раздаю интернет на 13 компов. Роутер стоит на станции. Также на станции есть компьютер который круглосуточно работает, который также подключен к роутеру и в нем я сделал управление включение/отключением розетки 220В через LPT порт - в розетке включен роутер и по моей команде эта розетка может отключаться на несколько секунд, потом снова напряжения в ней будет (сделано через таймер).


Специальная команда поступает через UDP порт. Извеняюсь очень запутано пишу. Зачем нужна розетка и т.д.? Представте ситуацию целых два месяца интернет работал без проблем, а вот этих два последних дня я бегаю 5км туда/сюда по два раза на день перегружаю роутер. Почему он виснет ? Как выяснилось, видимо то-ли вирус или другая хрень подставляет тот же айпи что и в роутере, в результате интернет то есть, то его нет, на страницу роутера невозможно войти и наконец роутер зависает. Я нашел выход! Сделал управление розеткой через порт LPT, даю по сети команду на айпи компа который круглосуточно работает на станции на конкретный UDP порт (там программа ждет команды и если подается команда, то дает логический "1" на выход LPT, в результате розетка отключается, роутер выключается и через три секунды дает на LPT логический "0", розетка снова дает 220В, роутер начинает нормально работать. Вроде бы все хорошо, НО сегодня роутер так завис что я не мог получить доступ к компьютеру тот что на станции, ведь роутер также является и свичом. Так что мне надо? Надо сделать програмку, которая буде каждых 10минут пытаться загрузить какую-то страницу (проверить наличия интернет). Если страница не загрузится -> подать команду выключить/включить розетку.
Делаю следующим способом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Function GET_MSXML_HTTP(ByVal strURL As String) As String
    Dim oHttp As Object
    
    On Error Resume Next
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If err.Number <> 0 Then
        Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
    End If
    On Error GoTo 0
    If oHttp Is Nothing Then
        MsgBox "Не удалось инициализировать объект MSXML!"
        Exit Function
    End If
    On Error Resume Next
     oHttp.Open "GET", strURL, False
     oHttp.send
    On Error GoTo 0
    GET_MSXML_HTTP = oHttp.ResponseText
    Set oHttp = Nothing
End Function


но мне не нравится в этом решении, что страница кешируется и прочитав раз, эта функция выдает данные из кеша (тоесть интернета может и не быть а функция ничего не заметит).
Вопрос остается прежним как проверить есть ли интернет ? Важно чтоб программа ни в коем случае не зависала, поскольку тот компьютер что на станции транслирует на весь город видеоканал/рекламу/поздравление.
с уважением Андрей
...
Рейтинг: 0 / 0
Как проверить есть ли интернет
    #37786600
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем плохо тестирование любого узла интернета? Тем, что любой узел может оказаться недоступен, даже яндекс и гугл (по причине сбоев маршрутизации). Но ведь на другом конце кабеля есть узел, который предполагается постоянно доступным? Шлюз! Так просто пингуй его, нет пинга - перезапускай роутер.
...
Рейтинг: 0 / 0
Как проверить есть ли интернет
    #37786604
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Андрей159
> Как выяснилось, видимо то-ли вирус или другая хрень подставляет тот же айпи что и в роутере , в результате интернет то есть, то его нет, на страницу роутера невозможно войти и наконец роутер зависает.

Маршрутизатору положить на то, какие адреса присваивают себе клиенты в локальной сети...
Может это у провадера проблемы последние два(?) дня ?
...
Рейтинг: 0 / 0
Как проверить есть ли интернет
    #37786615
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
Public Sub VhidniDani(Txt As String)
  Dim s As String
  Dim t1 As String
  Dim t2 As String
  Dim i As Long
  Dim l As String
 
  Static TrIgnor1 As Boolean
  s = Txt
  s = Replace(s, Chr(13) + Chr(13), Chr(13))
  s = Replace(s, Chr(10) + Chr(13), Chr(13))
  s = Replace(s, Chr(13) + Chr(10), Chr(13))
  Do
   i = InStr(s, Chr(13))
   If i > 0 Then
     t1 = Left(s, i - 1)
     If t1 <> FrmSMSMod1.Text1.Text Then
       If Trim(t1) <> "" Then
         
         
         
         
         FrmSMSMod1.List1.AddItem t1: FrmSMSMod1.List1.ListIndex = FrmSMSMod1.List1.ListCount - 1
         
         '+CMTI.....
         Debug.Print t1
         If UCase(Left(t1, 2)) = "OK" Then
            'Переводжу в режим читання смс з карточки
If LoadSms = True Then
  FrmSMSMod1.MSComm1.Output = "AT+CPMS=" + Chr(34) + "SM" + Chr(34) + "," + Chr(34) + "SM" + Chr(34) + "," + Chr(34) + "SM" + Chr(34) + Chr(13)
End If

           Exit Sub
         End If
         
         
         If LoadSms = True Then ' момент читання смс
           l = RozshifrovkaSMS(t1)
           FrmSMSMod1.Text3.Text = "Сервісний центр:" & PSMSCentrNomer & vbCrLf & "Дата-час:" & vbCrLf & "Номер відправника:" & PSenderNomer & vbCrLf & l 'RozshifrovkaSMS(t1)
If Nm <> "" Then FrmSMSMod1.MSComm1.Output = "AT+CMGD=" + Nm + Chr(13) 'стирання смс
            StatSms = "Прочитали смс"
           Exit Sub
         End If
         
         
         If UCase(Left(t1, 6)) = "+CMGR:" Then
            LoadSms = True 'Перехід в режим читання смс
            StatSms = "Читаємо смс"
         End If
         
         If UCase(Left(t1, 6)) = "+CMTI:" Then
           'Взнаємо номер смсски
           Nm = Trim(Mid(t1, InStrRev(t1, ",") + 1))
           If Nm = "" Then Exit Sub ' Помилка якась
           'Переходимо в режим читання смс з телефона
           FrmSMSMod1.MSComm1.Output = "AT+CPMS=" + Chr(34) + "ME" + Chr(34) + "," + Chr(34) + "ME" + Chr(34) + "," + Chr(34) + "ME" + Chr(34) + Chr(13)
           Exit Sub
         End If
         If UCase(Left(t1, 6)) = "+CPMS:" Then
            'Якщо перейшло в режим читання з телефону тоді читаємо смс
            If Nm <> "" Then FrmSMSMod1.MSComm1.Output = "AT+CMGR=" + Nm + Chr(13) 'читання смс
         End If
         
         
         If UCase(Left(t1, 6)) = "+CLCC:" Then
            'Після запитання хто до нас телефонує ми отримаємо готовий номер телефону
            i = InStr(t1, Chr(34))
            If i <> 0 Then
              HtoZvonit = Mid(t1, i + 1)
              HtoZvonit = Left(HtoZvonit, InStr(HtoZvonit, Chr(34)) - 1)
              If HtoZvonit = "38096xxxxxxx" Then Stop
            End If
            ''''FrmBookHtoZvonit.Label2.Caption = HtoZvonit + " "
            ''''FrmBookHtoZvonit.Show
         End If
         
         
         '+CMTI: "ME",97
         If UCase(t1) = "RING" Then ' Після того як ми побачили що до нас телефонують ми питаємось "Хто до нас телефонує ?"
           If Bell = 0 Then
             FrmSMSMod1.MSComm1.Output = "AT+CLCC" + Chr(13)
             HtoZvonit = ""
           End If
           Bell = 40
         End If
       End If
     End If
     s = Mid(s, i + 1)
   End If
  Loop While i > 0
  FrmSMSMod1.Text1.Text = ""
End Sub



Я раньше эксперементировал с смс-сками. Немного доделал движок и теперь телефон подключен через блютуз как модем будет выполнять перезагрузку роутера как только я позвоню. Спасибо всем за внимание. Я хотел как быстрей решить проблему чтоб заниматься своими делами, а то жить люди не дают. Завтра только обновлю софт, поставлю телефон и порядок. Кстати пробовал два разных ресурса по очереди
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  Dim s As String
  Dim p As String
Static i As Boolean
i = Not (i)
  If i = True Then s = "http://www.sql.ru" Else s = "http://m.rambler.ru/"
  p = GET_MSXML_HTTP(s)
  If p <> "" Then
    If Len(p) < 5 Then
      Beep
    End If
  End If


Работает теперь нормально. Вот только если интернет пропадает - прога зависает. А это еще нужно 2-3 часа помучаться чтоб такое сделать. Во первых такую прогу нужно компилировать отдельно, во вторых нужно через UDP порт мерять пульс жива ли сама прога, а то MSXML можно так вечно ждать пока он проснется (останавливает программу в зависании). У меня уже такое было, когда я делал симулятор одной игрушки-стратегии.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как проверить есть ли интернет
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]