我使用tshark捕获数据并保存数据包标头中的某些数据以处理它们,以便检测网络中的某些数据。我将数据保存在我的lua程序中的一个表中(使用命令(-Xlua_script :)在tdrk中使用tshark运行) 现在我想在捕获运行时单独处理每分钟的数据。这是一个在线处理。首先:任何人都知道这是否可以实现?其次我需要一个计时器,我不知道如何做到这一点,我想要一种方法,我可以采取表中的数据来处理它们,重置表得到下一分钟的新数据不会丢失任何数据。 有什么建议或想法?
答案 0 :(得分:1)
在lua中没有“计时器”的概念,就像其他一些语言一样,您可以在其中创建一个并设置事件处理程序,并在计时器关闭时通知主程序...但是您可以定期检查os.clock()以确定自完成某些处理以来已经过了多长时间,如果已经过了一分钟,请继续处理数据。
这样的事情可能就是你所需要的:
lastTimeProcessed = os.clock()
function IsTimeToProcess(currentTime)
span = currentTime - lastTimeProcessed
if span >= 60 then
lastTimeProcessed = currentTime
return true
end
return false
end
while true do
if IsTimeToProcess(os.clock()) then
-- process some data here
end
-- otherwise do another round of whatever you're doing
end