0

私はtsharkでデータをキャプチャし、パケットヘッダーから特定のデータを保存して処理し、ネットワーク内のいくつかの侵入者を検出します。luaプログラム(コマンド(-Xlua_script :)を使用してtsharkを使用してcmdで実行されている)のテーブルにデータを保存しました。次に、キャプチャの実行中に1分ごとのデータのみを処理したいと思います。これはオンライン処理です。第一に:これを実装できるかどうかは誰でも知っていますか?第二に、タイマーが必要です、これを行う方法がわかりません、そしてテーブル内のデータを取得して処理し、テーブルをリセットして取得する方法が必要ですデータを失うことなく、次の分の新しいデータ。何か提案やアイデアはありますか?

4

1 に答える 1

2

luaには他の言語のような「タイマー」の概念はありません。タイマーを作成してイベントハンドラーを設定し、タイマーが切れたときにメインプログラムに通知することができます...ただし、定期的にOSをチェックできます。 clock()を使用して、処理を行ってからの経過時間を判別し、1分が経過した場合は、先に進んでデータを処理します。

このようなものが必要な場合があります。

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 に答える