有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在没有TCP/IP协议栈的情况下用Java发送以太帧

我的Java应用程序应该控制一个直接连接到我的计算机网络接口(Ubuntu和Windows)的外部设备(EtherCAT总线技术)。没有连接其他网络设备。在没有IP协议栈的标准IEEE 802.3以太网帧上进行通信

发送数据的示例:

int etherType =  0x88A4;  // the EtherType registered by IEEE
byte[] macBroadcast = new byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
byte[] macSource = new byte[] ... ;  // MAC Address of my network interface card
byte[] buffer = ... // the data to send

device.write(macSource, macBroadcast, etherType, buffer);

我尝试了JNetPcap,它使用pcap本机库。给定的API很好,但在重载时存在多线程问题,这迫使我放弃

内蒂。io也是一名候选人。我不确定,但是TCP/IP协议栈是必须的。我说得对吗

是否还有其他方法可以与低级以太网帧通信?我更喜欢像netty这样的纯java库。伊奥,如果有的话

当然,JNA/JNI也是一种选择。但我不想写C代码

其他选择


共 (1) 个答案

  1. # 1 楼答案

    以下是我能找到的选项:

    我还看到一些评论,大意是jNetPcap应该是线程安全的,但实际上并非如此;i、 e.与多个线程一起使用时会出现问题