如何在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)
我使用 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)