So senden Sie Ethernet-Frames in Java ohne TCP / IP-Stack

8

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.

Beispiel für das Senden von Daten:

%Vor%

Ich habe JNetPcap versucht, das die pcap native Bibliothek verwendet. Die angegebene API war in Ordnung, aber es gab Multithread-Probleme bei hoher Auslastung, 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, um mit Low-Level-Ethernet-Frames zu kommunizieren? 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 nicht C-Code schreiben.

Andere Alternativen?

    
user1350889 24.04.2013, 10:09
quelle

1 Antwort

3

Dies sind die Optionen, die ich finden konnte:

  • jNetPcap ist ein libpcap-Wrapper für Java - Ссылка
  • Jpcap ist ein weiterer libpcap-Wrapper für Java - Ссылка
  • RockSaw ist eine Bibliothek zum Senden und Empfangen von IPv4- und IPv6-Paketen unter Verwendung von "rohen Sockets" - Ссылка . Soweit ich das beurteilen kann, ist es ziemlich begrenzt und wurde seit 2007 nicht mehr berührt.
  • Netutils verwendet libpcap und libnet - Ссылка

Ich habe auch Kommentare zu dem Effekt gesehen, dass jNetPcap Thread-sicher sein soll, aber in der Praxis ist es nicht; d. h. es ist fehlerhaft, wenn es mit mehreren Threads verwendet wird.

    
Stephen C 24.04.2013 11:15
quelle

Tags und Links