[Ubuntu-zh] QT+libpcap 混合编程
caimouse
ccaimouse在gmail.com
星期三 十二月 21 02:01:30 UTC 2011
C++学习不过关。
1. 应使用静态类成员作为回调函数。
2. 使用参数,或者全局变量传送类实例指针给静态成员函数。
因为静态类成员变量是全局的生命周期,而类没有实例化,仅是一种类型,不是实
例,因此不能在静态成员里访问成员,并且类可以实例多个,如果直接访 问成
员,就会导致全局访问局部的问题。
于 2011/12/20 20:53, 曹朋 写道:
> 问题描述:
> 笔者近日,在做网络嗅探器,其中用到一函数,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 的更多信息