使用Java监视tcpflow输出?

时间:2015-10-27 01:34:06

标签: java tcpdump

如何使用Java监控tcpflow输出? 我已经尝试了以下但它不适用于tcp流 -c arg。

Process process;

try {
    process = Runtime.getRuntime().exec("tcpflow -c");
    InputStreamReader ir = new 
    InputStreamReader(process.getInputStream());
    LineNumberReader input = new LineNumberReader(ir);
    String line;
    while ((line = input.readLine()) != null) {
        System.out.println("Output: " + line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

为什么tcpflow的输出没有被读取?但是,如果我执行 tcpflow -h ,则会读取输出。

1 个答案:

答案 0 :(得分:1)

通过从tcpflow拖尾日志文件找到了解决方法。

public static void main(String[] args) {
    File log = new File("packets.log");
    PacketListener listener = new PacketListener();
    Tailer tailer = Tailer.create(log, listener, 2500);
    tailer.run();
}

跟踪它的班级。

public class PacketListener extends TailerListenerAdapter {

    @Override
    public void handle(String line) {
        System.out.println("Inbound: " + line);
    }

}