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使用文档的下载链接,有兴趣的话最好还是照着使用文档来使用。
上面有什么错误还希望大家指正,希望能和大家多交流。
本文系原创,转载还请注明出处。