Мое приложение Java должно управлять внешним устройством (технология шины EtherCAT), напрямую подключенным к сетевому интерфейсу моего компьютера (Ubuntu и Windows). Никакие другие сетевые устройства не подключены. Связь должна осуществляться на стандартных фреймах Ethernet IEEE 802.3 без IP-стека.
Пример отправки данных:
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 был хорош, но были проблемы с многопоточностью при большой нагрузке, что заставило меня сдаться.
netty.io также был кандидатом. Я не уверен, но стек TCP / IP является обязательным. Я прав?
Есть ли другие идеи для связи с фреймами Ethernet низкого уровня? Я бы предпочел чистую библиотеку java, такую как netty.io, если таковая существует.
Конечно, JNA / JNI - тоже вариант. Но я не хочу писать код на C.
Другие альтернативы?