Meine Java-Anwendung sollte ein externes Gerät (EtherCAT-Bus-Technologie) steuern, das direkt mit der Netzwerkschnittstelle meines Computers (Ubuntu und Windows) verbunden ist. Keine anderen Netzwerkgeräte sind angeschlossen. Die Kommunikation muss auf Standard IEEE 802.3 Ethernet Frames ohne IP-Stack erfolgen.So senden Sie Ethernet-Frames in Java ohne TCP/IP Stack
Beispiel für das Senden von Daten:
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);
Ich versuchte JNetPcap, die die pcap native Bibliothek verwendet. Die angegebene API war in Ordnung, aber es gab Multithreading-Probleme bei hoher Last, was mich dazu zwang, aufzugeben.
netty.io war auch ein Kandidat. Ich bin mir nicht sicher, aber ein TCP/IP-Stack ist obligatorisch. Habe ich recht?
Gibt es andere Ideen für die Kommunikation mit Low-Level-Ethernet-Frames? Ich würde eine reine Java-Bibliothek wie netty.io bevorzugen, falls eine existiert.
Natürlich ist JNA/JNI auch eine Option. Aber ich möchte keinen C-Code schreiben.
Andere Alternativen?
Haben Sie eine Lösung gefunden? – arrowman