Jnetpcapブリーフ

Jnetpcapブリーフ

最近のプロジェクトでは、Java言語に基づいて、ローカルネットワークトラフィック分析を行い、インターネットに多くの情報を確認する必要がある。最後に、Jnetpcapがレコードであることをここに実現しました。

 

ちょうど私のツールとバージョンを使用するには:

     Eclipseのバージョン:2019から06(4.12.0)

     JDKのバージョン:12.0.1,2019-04-16

     WinPcapのバージョン:4.1.3

     JnetPcapバージョン:1.4.r1425

 

JavaはあなたがJNIはJavaの上位インタフェースを提供するために、Cライブラリの異なるシステムをラッパー、サードパーティ製のパッケージを使用する必要があり、基盤となるネットワークをサポートしていない、JPcapのような他のライブラリの数が荒廃している、私はここに実現Jnetpcapを使用することです。ここで私は、ファイルここに添付のリンクを使用するために必要な手順は、以下のとおりです。

 

    WinPcapの:https://pan.baidu.com/s/1Xu-HAaGSkOR-WriJM4wrBw、抽出コード:yti0

    JnetPcap:https://pan.baidu.com/s/16bfUf8jHIH7osmC7rd0i-w       、抽出コード:6pcx

JnetPcap開発者ドキュメント:https://pan.baidu.com/s/1O1GDTpTHmtHxMZXo3YXMdQ、抽出コード:mg2y

 

まず、インストールWinPcapの(Windowsシステム)

使用JnetPcapはWinPcapのは、ここでは、Windows、Linuxは、Lipcapをインストールする必要がシステムにインストールされるように、私は、Windowsのシステムを導入するために主にここにいます。

 

WinPcapのインストールパッケージは、上記与えられた下の線の上に直接実装されています。

 

 

 

第二に、インストールJnetPcap

ここJnetpcapを使用されるように私は、私は、単に手段にここで少しトラブル、輸入ジャーパッケージを使用して、何が悪かったのか分からないのMavenを使用せずに、私は常に中央倉庫でダウンロードすることができない依存関係を追加した後に表示され、ジャーパッケージ形態をインポート多くのトラブルをステップ。

 

まずJnetPcap上記のリンクダウンロードして解凍し、その後、次の2つの手順を実行します。

     (1)、.dllファイルシステムパスに加え 

        それはする必要がありますjnetpcap.dll jnetpcap.dll システムパスに追加し、することができ、ここでは便宜上、単にCに2つのファイルをコピーし、システムにここにパス自体またはJDK / binパスの下を追加:\ WINDOWS \ System32にリスト上の次の。

 

     (2)プロジェクトのJARパッケージを導入

       >新規 - - >フォルダ、名前のlibを記入し、あなただけのフォルダを作成し、次のファイルに、ファイルを解凍しjnetpcap.jar上記のファイルをコピーするEclipseで、ファイルをクリックしてください。

       続いて一歩、右クリックしてプロジェクトプロパティの下をクリックして、Javaのビルド・パスの選択がある - >ライブラリは、クラスパスをクリックして注意を払って、上記走行時間に追加された場合のModulePath上記パイプは、java.langで報告されているでしょうしません。 .NoClassDefFoundError。

       右をクリックして成功は以下のようになります後、行に追加]をクリックしますjnetpcap.jar内だけlibフォルダ内のファイルを見つけ、クラスパスにjarファイルを追加]をクリックします。

 

 このような構成は、基本的には、基本的なJnetPcapの成功です。

 

 使用する第三に、シンプル

 ここで私はJnetPcapの使用のいくつかの例を与えます。

 

デバイスのカードを取得します。

    //此方法用于获取设备上的网卡设施
    public static ArrayList<PcapIf> CaptureNet(){
        CaptureUtil.flag=false;
        
        // 用于存储搜索到的网卡
        ArrayList<PcapIf> alldevs = new ArrayList<PcapIf>(); 
        
        //取得设备列表
        int r = Pcap.findAllDevs(alldevs, errbuf);
        if (r == Pcap.NOT_OK || alldevs.isEmpty()) {
            JOptionPane.showMessageDialog(null,errbuf.toString(),"错误",JOptionPane.ERROR_MESSAGE); 
            return null;
           }
        return alldevs;
    }

 

 

 

 打开选中网卡并捕获数据包:

        //打开选中的设备
        int snaplen = Pcap.DEFAULT_SNAPLEN; // 默认长度为65535
        int flags = Pcap.MODE_PROMISCUOUS;  // 混杂模式,捕获所有类型的包
        int timeout = 5 * 1000;             // 5 seconds in millis
        Pcap pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf);
        if (pcap == null) {
            JOptionPane.showMessageDialog(null,errbuf.toString(),"错误",JOptionPane.ERROR_MESSAGE);
            return;
        }

 

 

 

开始监听:

pcap.loop(int cnt, JPacketHandler<T> handler, T user)

 

 

 

当然上面只是一些代码示例,不是完整的代码,在之后的博客中会更新完整的代码。

 

上面给出了JnetPcap使用文档的下载链接,有兴趣的话最好还是照着使用文档来使用。

 

上面有什么错误还希望大家指正,希望能和大家多交流。

 

 

本文系原创,转载还请注明出处。

 

おすすめ

転載: www.cnblogs.com/hzauxx/p/11128747.html