Moja aplikacja Java powinna sterować zewnętrznym urządzeniem (technologia EtherCAT Bus) bezpośrednio podłączonym do interfejsu sieciowego mojego komputera (Ubuntu i Windows). Żadne inne urządzenia sieciowe nie są podłączone. Komunikacja musi odbywać się na standardowych ramkach Ethernet IEEE 802.3 bez stosu IP.Jak wysyłać ramki Ethernet w Javie bez stosu TCP/IP
przykład do wysyłania danych:
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);
Próbowałem JNetPcap, która korzysta z pcap natywne biblioteki. Podany interfejs API był w porządku, ale przy dużym obciążeniu były wielowątkowe problemy, które zmusiły mnie do rezygnacji.
netty.io również był kandydatem. Nie jestem pewien, ale stos TCP/IP jest obowiązkowy. Czy mam rację?
Czy istnieją inne pomysły na komunikację z niskopoziomowymi ramkami Ethernet? Wolałbym czystą bibliotekę Java, taką jak netty.io, jeśli taka istnieje.
Oczywiście JNA/JNI jest również opcją. Ale nie chcę pisać kodu C.
Inne alternatywy?
Czy znalazłeś jakieś rozwiązanie? – arrowman