Russian Qt Forum
Ноябрь 27, 2024, 23:16
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Запрос по SNMP в Qt
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Запрос по SNMP в Qt (Прочитано 5390 раз)
Andrey
Гость
Запрос по SNMP в Qt
«
:
Февраль 08, 2013, 09:58 »
Доброго Всем суток. Есть конкретная задача написать запрос SNMP в поле LineEdit например: "1.3.6.1.2.1.1.1.0". По нажатию кнопки оправить его в порт 161 с определенным IP адресом и получить ответ в поле TextEdit.
Для примера взял образец на Еxample;
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QtNetwork"
#include<QUdpSocket>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton_2,SIGNAL(clicked()),SLOT(sbroadcastDatagram()));
recive();
}
MainWindow::~MainWindow()
{
delete ui;
}
QUdpSocket *udpSocket = new QUdpSocket();
void MainWindow :: recive()
{
connect(udpSocket, SIGNAL(readyRead()),
this, SLOT(processPendingDatagrams()));
udpSocket->bind (161,QUdpSocket::ShareAddress);
}
void MainWindow::sbroadcastDatagram()
{
QByteArray datagram = "1.3.6.1.2.1.1.1.0";
udpSocket->writeDatagram( datagram, QHostAddress("192.168.0.252"), 161);
// Запрос данных версии коммутатора СISCO
void MainWindow::processPendingDatagrams()
{
while (udpSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(datagram.data(), datagram.size());
ui->textEdit->setText(trUtf8("%1") // ("\"%1\"")
.arg(datagram.data()));
}
}
Прослушивая порт 161 пытаюсь поймать ответ в локальной сети.
В итоге поле пустое.
Если оправляю дейтаграмму на свой хост адрес получаю то что отправил " 1.3.6.1.2.1.1.1.0"
Если из командной строки то....
В командной строке Linux ответ на запрос выглядет так:
linux-upj2:~ # snmpget -v1 -c public 192.168.0.252 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software, C3750 Software (C3750-IPBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 19:15 by nachen
Подскажите, если это возможно , как написать аналогичный запрос в Qt и получить ответ пусть даже без предварительного преобразования в читабельный код.
Записан
Bepec
Гость
Re: Запрос по SNMP в Qt
«
Ответ #1 :
Февраль 08, 2013, 11:19 »
У вас задача широкая, оформление отвратное и путанное
Цитировать
}
QUdpSocket *udpSocket = new QUdpSocket();
void MainWindow :: recive()
Вот эта часть меня пугает.
Ничем помочь не могу, не понял вашей хотелки на 90%.
Записан
alexis031182
Гость
Re: Запрос по SNMP в Qt
«
Ответ #2 :
Февраль 08, 2013, 11:29 »
Не приходилось работать с SNMP, но может быть протокол подразумевает определённый формат запроса? Вы как бы отправляете просто строку по UDP. Этого наверное недостаточно.
Записан
Bepec
Гость
Re: Запрос по SNMP в Qt
«
Ответ #3 :
Февраль 08, 2013, 11:54 »
Окинул взглядом - бред.
Вы посылаете по UDP строку. Причём пытаетесь его направить видимо на адрес 192.168.0.252.
UDP - широковещательный запрос. Это не TCP/IP. А вам нужен запрос узла 192.168.0.252 с нужными параметрами.
smnp это не тупо строку отправить, там форматы вызовов есть, насколько я помню.
Проще выражаясь - ищите книги и пособия по smnp и читайте.
Записан
Andrey
Гость
Re: Запрос по SNMP в Qt
«
Ответ #4 :
Февраль 08, 2013, 12:11 »
Спасибо всем. Наверное у меня еще плохо получается. Я так полагаю ,что инструментов в QT напрямую работать по SNMP нет. И придется наверное копать дальше.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Запрос по SNMP в Qt
«
Ответ #5 :
Февраль 08, 2013, 12:14 »
Цитировать
Спасибо всем. Наверное у меня еще плохо получается. Я так полагаю ,что инструментов в QT напрямую работать по SNMP нет. И придется наверное копать дальше.
[сарказм]
Ой, а я вот хочу чтобы в Qt были инструменты для работы с ModBus, IEC101-104, DNP3, ProfiBus и пр. Ах, какая-же плохая Qt раз в ней этого нет. И придется наверное копать дальше.
[/сарказм]
Записан
ArchLinux x86_64 / Win10 64 bit
Andrey
Гость
Re: Запрос по SNMP в Qt
«
Ответ #6 :
Февраль 08, 2013, 12:22 »
Я не сказал, что Qt плохой набор библиотек. Наоборот мне кажеться ,что это одно из лучших средст для написания программ. В данном случае здесь понадобятся более глубокие знание по Qt чем они есть у меня.
Я брал кусок кода из программ примеров для Qt. там дейтаграмма оправлялась конкретному адресу IP и порта. Поэтому прочитав MIB для коммутатора попробовал послать строку запроса. Но видимо этого действительно мало.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...