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