|
||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||
java.lang.Object | +--jpcap.Jpcap
Java/Pcap基本クラス
パケットのキャプチャリングはこのクラスのインスタンスを通して行う。
使用方法:
環境変数CLASSPATHに/usr/local/java/jre/lib/jpcap.jarを追加する。
(例:setenv CLASSPATH .:/usr/local/java/jre/lib/jpcap.jar)
簡単なパケットキャプチャプログラム(tcpdumpライク)
import jpcap.*;
class Tcpdump implements JpcapHandler
{
public void handlePacket(Packet packet){
System.out.println(packet);
}
public static void main(String[] args) throws java.io.IOException{
Jpcap jpcap=new Jpcap(args[0],1000,true,20);
jpcap.processPacket(-1,new Tcpdump());
}
}
| 内部クラスの概要 | |
class |
Jpcap.JpcapInfo
キャプチャ情報を保持する為のクラス。 |
| フィールドの概要 | |
int |
dropped_packets
受信できなかったパケット数 |
int |
received_packets
受信したパケット数 |
| コンストラクタの概要 | |
Jpcap(java.lang.String filename)
tcpdumpでダンプしたファイルを開きJpcapのインスタンスを作成する |
|
Jpcap(java.lang.String device,
int snaplen,
boolean promisc,
int to_ms)
ライブキャプチャリング用にネットワークインターフェースを初期化しJpcapのインスタンスを作成する |
|
| メソッドの概要 | |
void |
close()
オープンしているインターフェースまたはダンプファイルを閉じる |
static java.lang.String[] |
getDeviceDescription()
getDeviceList()で所得したデバイスの説明を返す(MS Windowsのみ) Windowsではデバイス名を難解な番号と文字列として扱われています。 |
static java.lang.String[] |
getDeviceList()
キャプチャ可能なデバイスのリストを返す |
java.lang.String |
getErrorMessage()
エラーメッセージを返す |
Jpcap.JpcapInfo |
getJpcapInfo()
このJpcapインスタンスのJpcap.JpcapInfoを返す |
Packet |
getPacket()
パケットを1つ所得する |
static java.lang.String |
lookupDevice()
キャプチャ可能なデバイスを発見する |
int |
loopPacket(int count,
JpcapHandler handler)
パケットを連続して所得する 指定した数のパケットを所得します。 |
void |
openRawSocket()
IPパケット送信用のソケットを初期化する |
int |
processPacket(int count,
JpcapHandler handler)
パケットを連続して所得する 指定した数のパケットを所得します。 |
void |
sendPacket(IPPacket packet)
IPパケットを1つ送信する。 |
void |
setFilter(java.lang.String condition,
boolean optimize)
フィルタを設定する |
void |
updateStat()
received_packets と dropped_packetsを更新する |
| クラス java.lang.Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
public int received_packets
updateStat()public int dropped_packets
updateStat()| コンストラクタの詳細 |
public Jpcap(java.lang.String device,
int snaplen,
boolean promisc,
int to_ms)
throws java.io.IOException
device - キャプチャするネットワークデバイス名 (例:hme0,eth0)snaplen - 1度にキャプチャする最大バイト数promisc - 指定したインターフェースをプロミシャスモードにするto_ms - processPacket()を中断するまでのタイムアウト時間java.io.IOException - キャプチャデバイスを開けなった場合
public Jpcap(java.lang.String filename)
throws java.io.IOException
filename - ダンプファイルのファイル名java.io.IOException - ファイルが開けなかった場合| メソッドの詳細 |
public static java.lang.String lookupDevice()
public static java.lang.String[] getDeviceList()
public static java.lang.String[] getDeviceDescription()
Windowsではデバイス名を難解な番号と文字列として扱われています。 (例:\Device\Packet_{6E05D...})このメソッドは、各デバイスに 対するよりわかりやすい説明(例:3com EtherLinkII)を返します。
public Packet getPacket()
public int processPacket(int count,
JpcapHandler handler)
指定した数のパケットを所得します。指定数パケットを所得し終わるか タイムアウトになると終了します。実際に所得したパケット数を 返します。
count - 所得するパケット数handler - 所得したパケットを解析するためのJpcapHandlerクラス
public int loopPacket(int count,
JpcapHandler handler)
指定した数のパケットを所得します。processPacket()とは異なり、 タイムアウトを無視して指定したパケット数を所得するまで キャプチャを続けます。タイムアウトを利用したい時は processPacketを使用して下さい。
count - 所得するパケット数handler - 所得したパケットを解析するためのJpcapHandlerクラス
public void setFilter(java.lang.String condition,
boolean optimize)
condition - フィルタにセットする文字列optimize - trueの場合は最適化を行うpublic void updateStat()
received_packets と dropped_packetsを更新するpublic void openRawSocket()
public void sendPacket(IPPacket packet)
現在はTCP/UDP/ICMP over IPv4のみサポートしています。
ICMPはエコーパケットのみ送信します。
packet - 送信するIPパケットpublic java.lang.String getErrorMessage()
public void close()
public Jpcap.JpcapInfo getJpcapInfo()
|
||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||