Java 網絡數據分析包 JNetStream

fmms 12年前發布 | 41K 次閱讀 Java 網絡工具包

JNetStream 是一個用 Java 語言開發的網絡數據包分析類庫,同時也提供了一個分析工具。可以通過內置的NPL語言定義自己需要的協議 (比如可用NPL定義RTP與SIP協議),NPL的語法與Java/C相似。JNetStream還提供一個NPL語言調試器。

package org.jnetstream.example;

import java.io.File; import java.io.IOException; import java.nio.ByteBuffer;

import org.jnetpcap.packet.JMemoryPacket; import org.jnetpcap.packet.PeeringException; import org.jnetpcap.protocol.JProtocol; import org.jnetstream.capture.Captures; import org.jnetstream.capture.FileFormatException; import org.jnetstream.capture.FileMode; import org.jnetstream.capture.file.RecordIndexer; import org.jnetstream.capture.file.pcap.PcapFile; import org.jnetstream.capture.file.pcap.PcapRecord;

/**

  • A little test program to see what it would take to use jNetPcap to decode
  • jNetStream read packets. We take a pcap capture file, open it for read-write
  • with memory mapping so that we can peer natively with the underlying data.
  • @author Mark Bednarczyk
  • @author Sly Technologies, Inc. */ public class DecodeUsingJNetPcap {

    /**

    • Entry point.
    • @param args
    • ignored */ public static void main(String[] args) {

      try { PcapFile pcap = Captures.openFile(PcapFile.class, new File("tests/test-l2tp.pcap"),

      FileMode.ReadWriteWithMap);
      
      

      RecordIndexer records = pcap.getRecordIndexer();

      long count = pcap.getPacketCount();

      for (long i = 1; i < count; i++) {

      PcapRecord record = records.get(i); ByteBuffer b = record.getRecordBuffer();

      JMemoryPacket packet = new JMemoryPacket(JProtocol.ETHERNET_ID, b);

      System.out.println(packet); }

      pcap.close();

      } catch (FileFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (PeeringException e) { e.printStackTrace(); } } }</pre>

      項目主頁:http://www.baiduhome.net/lib/view/home/1326808906640

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!