2011/12/20 曹朋 <span dir="ltr"><<a href="mailto:a3825aa@gmail.com">a3825aa@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">问题描述:<br>
笔者近日,在做网络嗅探器,其中用到一函数,pcap_loop(pcap_t *,int,pcap_hander callback,u_char *);<br>
callback参数如下:(u_char *,const pcap_pkthdr *,const u_char *);其作用是,来一个数据<br>
包,调用一次callback,来一次调用一次。<br>
但,令笔者困惑的是,这个callback并不能被定义成类的成员,一旦定义成类的成员,编译便会报错<br>
argument of type‘void (classname::)(u_char *,const pcap_pkthdr *,const<br>
u_char *) does not match void (*)(u_char *,const pcap_pkthdr *,const u_char<br>
*)’。<br>
可是,不定义为成员,就访问不了类的成员。故,笔者换做了友元、static,编译,运行等,均不会有问题。可问题是,我想在callback当中使用类的成员。<br>
callback是用来处理网络数据的。也就是说,我想在callback当中处理了数据之后,在赋值给类的某个成员。然后,显示在界面上。<br>
<br>
<br>
问题:<br>
如何在callback当中使用类的成员?或者,这个callback应该一何种方式来定义?在或者,如何通过QT的信号与槽机制来实现?<br>
或者,有没有一种方案来解决这个问题?<br>
或者,谁可以提供一个思路?<br>
<br>
此为:笔者毕设,”基于Linux的网络嗅探器的设计与实现“<br>
自己当时的实现方案:<br>
1、使用libpcap首先在consle下实现抓包分析。<br>
2、学习QT界面。<br>
3、二者结合。。。就是这二者结合除了大问题了(当时也意识到,会出问题。。。libpcap(也就是C)+QT 混合编程)。<br> </blockquote><div>C++盲,C可没这么麻烦...</div><div>不过搜到这么个东西也许可以参考下自己出个wrapper...</div><div><a href="http://libpcappp.sourceforge.net/">http://libpcappp.sourceforge.net/</a><br>
</div><div><br></div>-- <br>best regards,<br>hunt<br>