因此,在我大学的最后一年的项目/论文中,我使用C++和pcap编写了一个包嗅探器。这个程序现在可以嗅探数据包,但是我正试图对它进行编码,这样当按下转义键时,嗅探就会停止。这是一段值得讨论的代码:
while ((result = pcap_loop(adhandle, 0, packet_handler, NULL)) == 0) {
if (result == 0)
continue;
if (GetAsyncKeyState(VK_ESCAPE))
{
result = -2;
}
if (result == -2)
{
pcap_breakloop(adhandle);
}
}当按下转义键时,什么都不会发生,嗅探会一直持续到程序关闭为止。任何帮助,为什么这是不起作用,将非常感谢!
发布于 2018-03-09 19:52:03
来自pcap_loop的文档
pcap_breakloop() () pcap_loop()处理来自实时捕获或‘savefile’的数据包,直到cnt数据包被处理为止,当从‘savefile’读取时,会到达‘savefile’的末尾,调用‘savefile’,或者出现错误。当发生实时读取超时时,它会执行而不是返回。cnt的值为-1或0等于无穷大,因此数据包将被处理,直到出现另一个结束条件。
因为pcap_loop的第二个参数是0,所以它将无限期地处理数据包,除非发生错误,否则不会到达won循环体。
https://stackoverflow.com/questions/49200075
复制相似问题