#c #linux #qt
#c #linux #qt
Вопрос:
я делаю проект под названием packet sniffing.который работает аналогично etherial.it захватывает и отображает все пакеты, поступающие на хост. для разработки этого проекта я работаю на платформе Linux и использую QT для его разработки. просто подскажите, у меня возникли следующие проблемы
- я могу отображать информацию о пакете в консоли, я хотел перенаправить эту информацию о пакете в свой графический интерфейс. возможно ли это.
Комментарии:
1. Программа, которую вы кодируете, выполняет перехват пакетов, или это внешняя программа?
Ответ №1:
Извините, что не точен, у меня нет материала для ссылки передо мной. Недавно я сделал именно это, это довольно просто. Используйте QProcess для запуска анализатора пакетов, затем создайте слот для обработки сигнала readyRead (?). Слот readyRead затем может считывать стандартный вывод и stderr из процесса и помещать вывод в графический интерфейс.
Ответ №2:
Если вы передаете std-вывод внешней программы в свою программу Qt, вы можете использовать QTextStream и присоединить его к вашему стандартному интерфейсу (см. Документы).
Оттуда вы можете передать объект QTextStream вокруг вашей программы и извлечь входные данные с помощью QTextStream::readLine(), добавив строки к вашему (например) QTextEdit.
Я не знаю, сработает ли это, но вы могли бы даже захватить QIODevice из QTextStream::device (), а затем подключить сигналы QIODevice:: readyRead () к вашим собственным слотам, чтобы сделать все асинхронным.
Комментарии:
1. спасибо leegent … теперь я могу получить вывод с консоли .. я использовал оба метода…
2. Вы должны отметить один из этих ответов как правильный 🙂