当前位置: 首页 > article >正文

java使用pcap4j进行报文发送和接收

1、pcap4j框架使用的驱动Npcap需要进行安装

2、获取自己window电脑的mac地址设备

在cmd中使用的命令是getmac

使用程序获取服务器本身的mac地址

import org.pcap4j.core.PcapNativeException;
import org.pcap4j.core.PcapNetworkInterface;
import org.pcap4j.core.Pcaps;

public class ListDevices {

    public static void main(String[] args) throws PcapNativeException {
        for (PcapNetworkInterface nif : Pcaps.findAllDevs()) {
            System.out.println(nif.getName() + " (" + nif.getDescription() + ")");
        }
    }

}

获取的类似于这种,但是实际代码使用需要加双斜杠

\Device\NPF_{YOUR_INTERFACE_ID}

例如(\\Device\\NPF_{YOUR_INTERFACE_ID})

3、编写发送报文的程序

发送端

import org.pcap4j.core.*;
import org.pcap4j.packet.Packet;
import org.pcap4j.packet.UnknownPacket;

public class Sender {

    private static final String INTERFACE_NAME = "\\Device\\NPF_{网卡地址}"; // 替换为实际的网卡名称
    private static final byte[] INSTRUCTION = "Hello from Sender".getBytes();

    public static void main(String[] args) throws PcapNativeException, NotOpenException, InterruptedException {
        PcapNetworkInterface nif = Pcaps.getDevByName(INTERFACE_NAME);
        if (nif == null) {
            System.err.println("No such device found: " + INTERFACE_NAME);
            return;
        }

        PcapHandle handle = nif.openLive(65536, PcapNetworkInterface.PromiscuousMode.PROMISCUOUS, 10);
        Packet packet = UnknownPacket.newPacket(INSTRUCTION, 0, INSTRUCTION.length);

        handle.sendPacket(packet);
        System.out.println("Instruction sent.");

        handle.loop(10, new PacketListener() {
            @Override
            public void gotPacket(Packet packet) {
                System.out.println("Received response: " + new String(packet.getRawData()));
            }
        });

        handle.close();
    }

}


http://www.kler.cn/a/532828.html

相关文章:

  • 【工欲善其事】利用 DeepSeek 实现复杂 Git 操作:从原项目剥离出子版本树并同步到新的代码库中
  • 保姆级教程Docker部署Zookeeper官方镜像
  • 扩展域并查集 带权并查集
  • 蓝桥与力扣刷题(141 环形链表)
  • RK3566-移植5.10内核Ubuntu22.04
  • kamailio-ACC_JSON模块详解【后端语言go】
  • Go语言指针的解引用和间接引用
  • 深入理解Node.js_架构与最佳实践
  • static成员变量的本质?静态变量?静态类有什么意义?全局变量?类函数?
  • DeepSeek最新图像模型Janus-Pro论文阅读
  • 落地 dnn对象检测
  • 【BUUCTF杂项题】面具下的flag
  • MTGNN论文解读
  • Electron使用WebAssembly实现CRC-8 MAXIM校验
  • CompletableFuture
  • 2. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--.NET Aspire 概览
  • Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)
  • C 语言 | 入门 | 先导课程
  • asp.netcore 有关jwt的依赖包介绍
  • 鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍
  • DeepSeek-V3:开源多模态大模型的突破与未来
  • 【力扣题解】922. 按奇偶排序数组 II
  • 蓝桥与力扣刷题(141 环形链表)
  • 鼠标拖尾特效
  • BUU17 [RoarCTF 2019]Easy Calc1
  • 游戏引擎学习第87天