Java抓包JpcapCaptor笔记及源码

本文详细介绍了使用Java的JpcapCaptor库进行网络抓包的方法,包括基本概念、配置步骤和关键代码示例。通过阅读,读者将能够理解如何在Java应用中实现网络数据包的捕获和分析,为网络监控和大数据处理提供基础支持。
摘要由CSDN通过智能技术生成

Java抓包JpcapCaptor笔记及源码

package test6;

import java.io.IOException;

import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.PacketReceiver;
import jpcap.packet.ARPPacket;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
import jpcap.packet.TCPPacket;

public class TestZonJie implements PacketReceiver {

	public static void main(String[] args) {
		JpcapCaptor jpcap = null;
		NetworkInterface[] devices = JpcapCaptor.getDeviceList(); 
		NetworkInterface deviceName = devices[2];
		try {
			jpcap = JpcapCaptor.openDevice(deviceName, 2000, false, 1);//发送
			//
			//JpcapCaptor.openDevice(intrface, snaplen, promisc, to_ms)
			//snaplen用于指定所捕获包的特定部分,在一些系统上(象xBSD and Win32等)驱动只给出所捕获数据包的一部分而不是全部
			//promisc指明网卡处于混杂模式
			//to_ms 参数指定读数据的超时控制,超时以毫秒计算。
			//如果该参数为0那么意味着没有超时控制,对网卡的读操作在没有数据到来是将永远堵塞。
			//如果为-1那么对网卡的读操作将立即返回不管有没有数据可读。
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		System.out.println(jpcap);
		jpcap.loopPacket(-1, new TestZonJie());
	}

	@Override
	public void receivePacket(Packet packet) {
		//这个关键字的用法是:A instanceof B ,返回值为boolean类型,
		//用来判断A是否是B的实例对象或者B子类的实例对象,如果是则返回true,否则返回false
			if(packet instanceof TCPPacket) {
				 TCPPacket tcppacket = ((TCPPacket)packet);
				 //System.out.println(tcppacket.src_ip);
				 //HTTP端口(80),HTTPS端口(443)和FTP端口(21)、NNTP使用TCP端口号119
				 int post=tcppacket.src_port;
				 System.out.println(post==80?"HTTP端口":post==21?"FTP端口":post==443?"HTTPS端口":post);
			}
			if(packet instanceof ARPPacket) {//如果是arp数据包
				ARPPacket tcppacket1 = ((ARPPacket)packet);
				// System.out.println(tcppacket1.getSenderHardwareAddress());
			}
			
			if(packet instanceof IPPacket) {//如果是ip数据包
				
			}
			
		/*System.out.println("************************************************************");
		System.out.println(packet.caplen);
		System.out.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值