0

我已经阅读了几篇关于这个问题的文章,但没有一篇能解决我的问题。

简而言之,在我的 NSApplicationDelegate 中,我调用了一个函数pcap_looppcap_loop需要一个函数指针作为回调,回调签名是

void got_packet(u_char *, const struct pcap_pkthdr *, const u_char *)

我想将 NSApplicationDelegate 的方法之一作为回调传递,所以我可以在我的应用程序中使用这些数据,有人建议我使用“SEL + IMP”,但我无法传递selfto 回调,也有人建议“阻止”,而不是工作。

那么,有什么想法吗?

谢谢!

4

1 回答 1

2

您需要的本质可以在这个答案中找到。

在您的情况下,您正在调用pcap_loop

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

哪里pcap_handler是:

void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);

现在 , 的最后一个参数作为第一个参数传递给 ,并且可以是任何pcap_loop想要的。这对应于上一个答案中的参数/ 。现在只需按照前面的答案,传递一个调用您的方法的块 as和 C 函数调用该块 as 。usergot_packetargscb_arganonNSApplicationDelegateusercallback

于 2012-11-19T09:29:02.597 回答