Skip to content

Latest commit

 

History

History
77 lines (55 loc) · 1.61 KB

12-PcapFileMerger.md

File metadata and controls

77 lines (55 loc) · 1.61 KB

介绍

从本文开始将对 Pcap4J(下文简称为 p4)提供的样例代码进行注释讲解,期间还包括了对 Pcap 原理的解读


每篇文章讲解一个样例,目录如下: 目录


PcapFileMerger

原理

通过本文了解使用 p4 的 dumper 对象操作 .pcap 文件

步骤

实现

package org.pcap4j.sample;

import org.pcap4j.core.NotOpenException;
import org.pcap4j.core.PcapDumper;
import org.pcap4j.core.PcapHandle;
import org.pcap4j.core.PcapNativeException;
import org.pcap4j.core.PcapPacket;
import org.pcap4j.core.Pcaps;

@SuppressWarnings("javadoc")
public class PcapFileMerger {

  private PcapFileMerger() {}

  public static void main(String[] args) throws PcapNativeException, NotOpenException {
    // args: pcap file list

    PcapDumper dumper = null;
    for (String pcapFile : args) {
      PcapHandle handle = Pcaps.openOffline(pcapFile);

      if (dumper == null) {
        // handle.dumpOpen 返回一个 dumper 对象
        dumper = handle.dumpOpen(PcapFileMerger.class.getSimpleName() + ".pcap");
      }

      // dump packet, 注意, 这里使用的是 handle.getNextPacket() 还不是 Ex 版本
      PcapPacket packet;
      while ((packet = handle.getNextPacket()) != null) {
        dumper.dump(packet);
      }

      handle.close();
    }

    if (dumper != null) {
      dumper.close();
    }
  }
}

总结

学习了 pcap 文件合并的原理和步骤