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

时间:2015-07-08 09:59:10

标签: python packet sniffer

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

2 个答案:

答案 0 :(得分:0)

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

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

Tcpdump通过调用libpcap的set_buffer_size()方法设置缓冲区大小,但似乎pypcap不能这样做。

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

答案 1 :(得分:0)

尝试设置snaplen

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


sniff=pcap.pcap(snaplen=102400)