首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winpcap:暂停/停止嗅探的pcap_breakloop函数不起作用

Winpcap:暂停/停止嗅探的pcap_breakloop函数不起作用
EN

Stack Overflow用户
提问于 2018-03-09 18:33:01
回答 1查看 758关注 0票数 1

因此,在我大学的最后一年的项目/论文中,我使用C++和pcap编写了一个包嗅探器。这个程序现在可以嗅探数据包,但是我正试图对它进行编码,这样当按下转义键时,嗅探就会停止。这是一段值得讨论的代码:

代码语言:javascript
复制
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);
        }
    }

当按下转义键时,什么都不会发生,嗅探会一直持续到程序关闭为止。任何帮助,为什么这是不起作用,将非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-09 19:52:03

来自pcap_loop的文档

pcap_breakloop() () pcap_loop()处理来自实时捕获或‘savefile’的数据包,直到cnt数据包被处理为止,当从‘savefile’读取时,会到达‘savefile’的末尾,调用‘savefile’,或者出现错误。当发生实时读取超时时,它会执行而不是返回。cnt的值为-1或0等于无穷大,因此数据包将被处理,直到出现另一个结束条件。

因为pcap_loop的第二个参数是0,所以它将无限期地处理数据包,除非发生错误,否则不会到达won循环体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49200075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档