0

私は比較的単純なパケット キャプチャ アプリケーションに取り組んでおり、Jpcap ライブラリを使用しています。プログラムに保存機能を追加するまで、すべてが機能していました。

私の書き込み機能

public void write() {
    try {
        writer = JpcapWriter.openDumpFile(captor, fileName);
    } catch (IOException e) {e.printStackTrace();}
    for (Packet packet : this.packets) {
        writer.writePacket(packet);
    }
    writer.close();
}

キャプターとファイルパスを正しく取得し、すべてのパケットを正常にループしますが、コード ブロックの最後に書き込もうとすると、JVM がクラッシュします。

私の質問は、JpcapWriter を閉じようとするとアプリケーションがクラッシュするのはなぜですか?

更新:私が発見した奇妙なことは、実際にファイルに書き込んでいることです。書き込み後にクラッシュするだけです。クローズ後にprint文を追加しましたが、届きません。

4

1 に答える 1

0

私と同じ問題を抱えている他の人を何人か見つけました。理由はわかりませんが、ライターを閉じるための呼び出しを削除すると問題が解決しました。ファイルは正しく書き込まれるようになり、問題はありません。今のところ、私はそれが機能していることに満足していますが、後日この問題に戻るかもしれません.

更新:キャプチャを停止するための呼び出しが行われると、ファイルが閉じられることが判明しました。キャプチャ スレッドが閉じられると、キャプターが閉じられ、それによってライターが閉じられます。本質的には、ライターがすでに閉じられていたため、ライターを閉じるように指示しようとしていたため、JVM がクラッシュしました。

于 2012-06-05T21:17:41.643 に答える