如何在pypcap中设置缓冲区大小

How to set buffer size in pypcap

我使用 pypcap Python 库(在 Linux 中)创建了一个数据包嗅探器。使用 pypcap 库的 .stats() 方法,我发现当网络繁忙时,内核有时会丢弃很少的数据包。是否可以增加 pypcap 对象的缓冲区大小,以便丢弃更少的数据包(就像在 tcpdump 中可能那样?)。

我研究了 pypcap 的源代码,据我所知,没有办法从中设置缓冲区大小。

因为pypcap使用的是libpcap库,所以我在libpcap的源代码中更改了默认缓冲区大小,然后从源代码重新安装。这似乎解决了问题。

tcpdump通过调用libpcap的set_buffer_size()方法来设置缓冲区大小,但是pypcap好像做不到。

编辑:缓冲区大小变量位于 pcap-linux.c 文件中,名称为 opt.buffer_size。我默认为2MB(源码中为2*1024*1024)

尝试设置 snaplen

    class pcap(object):
        """
        pcap(name=None,snaplen=65535,promisc=True,timeout_ms=None,immediate=False)

        -> packet capture object
        """
    

    sniff=pcap.pcap(snaplen=102400)