Python wrpcap在单独线程中运行时未创建pcap文件
我正在尝试使用scapy捕获网络流量,方法是在线程中运行sniff,而不是在主线程中运行它。以避免应用程序被阻塞。但我面临的问题是wrpcap没有创建文件,如果创建了,它会创建一个0 Kb的文件 我使用单独线程的另一个原因是,当用户希望结束捕获时,我希望能够关闭线程Python wrpcap在单独线程中运行时未创建pcap文件,python,multithreading,scapy,python-2.5,Python,Multithreading,Scapy,Python 2.5,我正在尝试使用scapy捕获网络流量,方法是在线程中运行sniff,而不是在主线程中运行它。以避免应用程序被阻塞。但我面临的问题是wrpcap没有创建文件,如果创建了,它会创建一个0 Kb的文件 我使用单独线程的另一个原因是,当用户希望结束捕获时,我希望能够关闭线程 from scapy.all import * from time import gmtime , strftime import threading import time def bomber(stop_event):
from scapy.all import *
from time import gmtime , strftime
import threading
import time
def bomber(stop_event):
data=[]
pkts=[]
while not stop_event.isSet() :
pkt100=sniff(count=100)
data.append(pkt100)
for pkt in data:
for x in range(100):
pkts.append(pkt[x])
pktsRoll=PacketList(pkts)
savename="F:\\%s.pcap" % strftime("%Y-%m-%d,%H:%M", gmtime())
wrpcap(savename,pktsRoll)
print " its done "
def main():
stop_event = threading.Event()
c_thread = threading.Thread(target=bomber, args=(stop_event,))
c_thread.start()
time.sleep(20)
stop_event.set()
这是我正在尝试的代码。我正在使用Python 2.5
提前谢谢。是否打印“完成”了?是的,但会在一段时间后打印。但是它没有在文件中放任何东西。@RyPeck:是的,但是过了一段时间它就放了。所以我所做的是减少它在一个循环周期内捕获的数据包数量,显然它工作正常。所以问题似乎是网络上没有足够的数据包来编写PCAP文件?@RyPeck:不,这不是问题,我同时下载了一段视频以产生流量。我认为问题是,线程在到达写入文件的部分之前就关闭了。