QT+Libpcap混合编程
笔者近日,在做网络嗅探器,其中用到一函数,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应该一何种方式来定义?在或者,如何通过QT的信号与槽机制来实现只?
这是因为libpcap是基于C的。而QT是基于C++的。使用libpcap编程,就是使用pcap_loop()来“接受到来的数据”;然后在调用CALLBACK来处理这些原始的数据,并显示。
问题二: 我需要一个图形界面,也就是说,我得需要将在CALLBACK处理数据的过程中,获得的一些数据包的信息在图形界面上显示,也就是在QT当中的“ Text Browser ” 显示数据。可是callback并不能够定义成为类的方法,又如何能够访问的到类的成员呢?