java寫的話用 JPACAP
Jpcap是壹個能夠抓取與發送網絡數據包的Java組件。可以使用Jpcap從壹個網絡接口獲取數據包,然後在Java中對它們進行分析和顯示。同樣也可以通過壹個網絡接口發送任意數據包。Jpcap當前能夠 捕獲以太網,IPv4,IPv6,ARP/RARP,TCP,UDP和ICMPv4數據包。
Jpcap實際上並非壹個真正去實現對數據鏈路層的控制,而是壹個中間件,Jpcap調用wincap/libcap,而給Java語言提供壹個公***的接口,從而實現了平臺無關性。在官方網站上聲明,Jpcap支持FreeBSD3.x,Linux RedHat6.1, Fedora Core4,Solaris,and Microsoft Windows 2000/XP等系統。
Jpcap的整個結構大體上跟wincap/libpcap是很相像的,例如NetworkInterface類對應wincap的 typedef struct_ADAPTER ADAPTER,getDeviceList()對應pcap_findalldevs()等等。
Jpcap主要的類有如下幾個:
1.NetworkInterface
該類的每壹個實例代表壹個網絡設備,壹般就是網卡。這個類只有壹些數據成員,除了繼承自java.lang.Object的基本方法以外,沒有定義其它方法。
2.JpcapCaptor
該類提供了壹系列靜態方法實現壹些基本的功能。該類壹個實例代表建立了壹個與指定設備的鏈接,可以通過該類的實例來控制設備,例如設定網卡模式、設定過濾關鍵字等等。
3.JpcapSender
該類專門用於控制數據包的發送。
4.Packet
這個是所有其它數據包類的父類。Jpcap所支持的數據包有:
ARPPacket、DatalinkPacket、EthernetPacket、ICMPPacket、IPPacket、TCPPacket、UDPPacket。