Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    VB .net: общение через IP-адрес роутера

    VB .net: общение через IP-адрес роутера

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    VB .net: общение через IP-адрес роутера, RouterOS
     
    slimprize
    Guest
    #1
    0
    17.08.2012 10:09:00
    Привет всем!

    Я пытаюсь использовать пример из вики в простом приложении на vb.net. Не получается связаться с роутером. Выдаёт ошибку "host not found". Мой код ниже.

    ```
    Module Module1
       'function from http://www.planet-source-code.com/vb/scripts/ShowCodeAsText.asp?txtCodeId=5179&lngWId=10
       Private Function IPToInteger(ByVal Expression As String) As Integer
           Try
               Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(Expression)
               With IPAddress
                   Return (System.Convert.ToInt32(.GetAddressBytes(3)) << 24) Or (System.Convert.ToInt32(.GetAddressBytes(2)) << 16) Or (System.Convert.ToInt32(.GetAddressBytes(1)) << 8) Or System.Convert.ToInt32(.GetAddressBytes(0))
               End With
           Catch ex As Exception
               Return 0
           End Try
       End Function

       Sub Main()
           Dim l As Long
           l = IPToInteger("192.168.88.1")
           Dim mk = New Mikrotik(l)
           If Not mk.Login("admin", "pwd") Then
               Console.WriteLine("Не удалось войти в систему")
               mk.Close()
               Console.ReadLine()
               Return
           End If
           mk.Send("/system/clock/getall", True)
           For Each row In mk.Read()
               Console.WriteLine(row)
           Next
           Console.ReadLine()
       End Sub
    End Module
    ```

    Я ничего не менял в классе из вики, поэтому код не прикладываю.
     
     
     
    janisk
    Guest
    #2
    0
    17.08.2012 12:51:00
    Начнём с главного: проверьте, включен ли порт API-сервиса и не заблокирован ли он брандмауэром. Также проверьте, доступен ли ваш роутер с вашего ПК. После этого можно проверить с помощью Python-клиента, всё ли в порядке. А потом можно начинать проверять с какого-нибудь неизвестного клиента, чтобы попробовать подключиться, аутентифицироваться и выполнить некоторые запросы.
     
     
     
    slimprize
    Guest
    #3
    0
    18.08.2012 00:08:00
    Winbox работает. Подозриваю, что проблема в моем .net коде. У меня нет DNS-сервера в локальной сети. Это домашняя сеть, поэтому я изменил код, чтобы он обрабатывал один IP-адрес. Какие еще есть мысли?
     
     
     
    ditonet
    Guest
    #4
    0
    18.08.2012 22:03:00
    Winbox работает. API – это отдельный сервис и работает на порту 8728 (по умолчанию). Проверьте это в ‘IP/Services’. В вашем коде IP-адрес (в виде строки) преобразуется в целое число. Public Sub New(ByVal ipOrDns As String, Optional ByVal port As Integer = -1) Dim ips = Net.Dns.GetHostEntry(ipOrDns) tcpCon.Connect(ips.AddressList(0), If(port = -1, 8728, port)) tcpStream = tcpCon.GetStream() End Sub Sub New в классе Mikrotik требует ipOrDns As String. Также есть ошибка в ‘Function IPToInteger’: IP-адрес преобразуется в обратном порядке, например, 1.88.168.192. Надеюсь, это поможет, HTH.
     
     
     
    slimprize
    Guest
    #5
    0
    18.08.2012 23:54:00
    [admin@conShield] /ip service> print
    Flags: X - disabled, I - invalid
    NAME        PORT ADDRESS                                           CERTIFICATE
    0   telnet        23
    1   ftp           21
    2   www           80
    3   ssh           22
    4 X www-ssl      443                                                   none
    5   api         8728
    6   winbox      8291

    I removed the ip address conversion function and now, I am getting an index out of range exception. An unhandled exception of type ‘System.IndexOutOfRangeException’ occurred in RBCmd.exe
    Additional information: Index was outside the bounds of the array. The error is at tcpCon.Connect(ips.AddressList(0), If(port = -1, 8728, port))

    my modified code is
    Sub Main()
    Dim mk = New Mikrotik(“192.168.88.1”)
    If Not mk.Login(“admin”, “pwd”) Then
    Console.WriteLine(“Cant log in”)
    mk.Close()
    Console.ReadLine()
    Return
    End If
    mk.Send(“/system/clock/getall”, True)
    For Each row In mk.Read()
    Console.WriteLine(row)
    Next
    Console.ReadLine()
    End Sub
     
     
     
    ditonet
    Guest
    #6
    0
    20.08.2012 12:00:00
    Используй встроенный отладчик Visual Studio, чтобы найти источник ошибки. Запускай свой проект клавишей F8 – он будет выполнять твой код построчно. Удачи, HTH.
     
     
     
    slimprize
    Guest
    #7
    0
    20.08.2012 12:30:00
    Привет, я провёл трассировку. Проблема в tcpCon.Connect(ips.AddressList(0), If(port = -1, 8728, port)). Что мне непонятно, так это что делает следующая строка: Dim ips = Net.Dns.GetHostEntry(ipOrDns). Насколько я понимаю, эта строка запрашивает DNS-сервер, которого у меня нет. У меня есть только один IP-адрес, к которому я хочу подключить поток. Пранав.
     
     
     
    ditonet
    Guest
    #8
    0
    20.08.2012 13:14:00
    Вот мои небольшие изменения кода: Sub Main()
           Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse("192.168.88.1")

           Dim mk = New Mikrotik(IPAddress)

           If Not mk.Login("user", "pass") Then
               Console.WriteLine("Не могу войти")
               mk.Close()
               Console.ReadLine()
               Return
           End If

           mk.Send("/system/clock/getall", True)
           For Each row In mk.Read()
               Console.WriteLine(row)
           Next
           Console.ReadLine()
       End Sub Public Sub New(ByVal IPAddr As System.Net.IPAddress, Optional ByVal port As Integer = -1)

               tcpCon.Connect(IPAddr, If(port = -1, 8728, port))
               tcpStream = tcpCon.GetStream()
           End Sub Теперь этот пример работает без DNS. Надеюсь, это поможет,
     
     
     
    slimprize
    Guest
    #9
    0
    20.08.2012 13:41:00
    Привет, Гжегож! Большое спасибо за правки. Это именно то, что мне было нужно. Пранав.
     
     
     
    willsmannar
    Guest
    #10
    0
    09.09.2012 19:14:00
    Зацени эту коммуникацию по TCP/IP: http://vb.net-informations.com/communications/vb.net_socket_programming.htm. Подключайся и передавай потоки, wills.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры