首先在这里谢谢各位的热情帮助。 可能我的问题还有描述清除。 但是,从一些朋友的回答当中,已经学到了很多东西。 现在的问题:
嗅探器(抓取数据包)是由libpcap库来实现的,而这个libpcap库是由C实现的。 使用C在控制台下完全可以获取一些网络数据包,并分析之。 但是,我得需要一个图形界面,故使用了QT来作图形界面。 问题,就是出现在了C(也就是libpcap)和QT混合起来; 由于在处理网络数据包的时候,使用到了回调函数(已经在上篇邮件当中说明); 怎样将这种策略转化为QT当中可使用的方法。 在 2011年12月21日 上午10:49,Leo Ding <leo.din...@gmail.com>写道: > QT 的信号槽使用也很方便,QWidget编程还是挺简单的,如果用QGraphicsWidget写程序的话那一个郁闷啊,不过动画效果能做的很好 > ~~~~ > > 在 2011年12月20日 下午8:53,曹朋 <a382...@gmail.com>写道: > > > 问题描述: > > 笔者近日,在做网络嗅探器,其中用到一函数,pcap_loop(pcap_t *,int,pcap_hander callback,u_char > *); > > callback参数如下:(u_char *,const pcap_pkthdr *,const u_char *);其作用是,来一个数据 > > 包,调用一次callback,来一次调用一次。 > > 但,令笔者困惑的是,这个callback并不能被定义成类的成员,一旦定义成类的成员,编译便会报错 > > argument of type‘void (classname::)(u_char *,const pcap_pkthdr *,const > > u_char *) does not match void (*)(u_char *,const pcap_pkthdr *,const > u_char > > *)’。 > > > > > 可是,不定义为成员,就访问不了类的成员。故,笔者换做了友元、static,编译,运行等,均不会有问题。可问题是,我想在callback当中使用类的成员。 > > callback是用来处理网络数据的。也就是说,我想在callback当中处理了数据之后,在赋值给类的某个成员。然后,显示在界面上。 > > > > > > 问题: > > 如何在callback当中使用类的成员?或者,这个callback应该一何种方式来定义?在或者,如何通过QT的信号与槽机制来实现? > > 或者,有没有一种方案来解决这个问题? > > 或者,谁可以提供一个思路? > > > > 此为:笔者毕设,”基于Linux的网络嗅探器的设计与实现“ > > 自己当时的实现方案: > > 1、使用libpcap首先在consle下实现抓包分析。 > > 2、学习QT界面。 > > 3、二者结合。。。就是这二者结合除了大问题了(当时也意识到,会出问题。。。libpcap(也就是C)+QT 混合编程)。 > > -------------- 下一部分 -------------- > > 一个HTML附件被移除... > > URL: < > > > https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111220/24e95459/attachment.html > > > > > -- > > ubuntu-zh mailing list > > ubuntu-zh@lists.ubuntu.com > > https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh > > > -------------- 下一部分 -------------- > 一个HTML附件被移除... > URL: < > https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111221/339055ae/attachment.html > > > -- > ubuntu-zh mailing list > ubuntu-zh@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh > -------------- 下一部分 -------------- 一个HTML附件被移除... URL: <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111221/b88ee7f0/attachment.html> -- ubuntu-zh mailing list ubuntu-zh@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh