【发布时间】:2011-05-12 07:26:30
【问题描述】:
我正在做一个名为数据包嗅探的项目。它的工作原理类似于 etherial。它捕获并显示所有到达主机的数据包。开发这个项目正在linux平台上工作并使用QT来开发它。请指导我遇到以下问题
- 能够在控制台中显示数据包信息我想将这些数据包信息重定向到我的 GUI。有可能吗?
【问题讨论】:
-
您正在编写的程序是执行数据包嗅探,还是外部程序?
我正在做一个名为数据包嗅探的项目。它的工作原理类似于 etherial。它捕获并显示所有到达主机的数据包。开发这个项目正在linux平台上工作并使用QT来开发它。请指导我遇到以下问题
【问题讨论】:
抱歉,不准确,我面前没有参考资料。我最近正是这样做的,它非常简单。使用 QProcess 启动数据包嗅探器,然后创建一个插槽来处理 ReadyRead (?) 信号。 ReadyRead 插槽然后可以从进程中读取 stdout 和 stderr 并将输出放到 GUI 上。
【讨论】:
如果您将外部程序的标准输出通过管道传输到您的 Qt 程序,您可以使用 QTextStream 并将其附加到您的标准输入(参见 docs)。
从那里你可以在你的程序周围传递 QTextStream 对象并使用 QTextStream::readLine() 提取输入,将这些行附加到你的(例如)QTextEdit。
我不知道这是否可行,但您甚至可以从 QTextStream::device() 中获取 QIODevice,然后将 QIODevice::readyRead() 信号连接到您自己的插槽以使一切异步。
【讨论】: