0

我使用 tshark 捕获数据并保存数据包头中的某些数据以进行处理,以便检测网络中的某些事件。我将数据保存在我的 lua 程序中的表中(使用命令 (-Xlua_script:) 在 cmd 中使用 tshark 运行),现在我想在捕获运行时单独处理每分钟的数据。这是一个在线处理。首先:任何机构都知道这是否可以实现?其次我需要一个计时器,我不知道如何做到这一点,我想要一种方法,我可以获取表中的数据来处理它们,重置表以获得下一分钟的新数据,不会丢失任何数据。有什么建议或想法吗??

4

1 回答 1

2

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
于 2012-02-22T15:02:38.290 回答