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