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

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '395150',
    'url' => 'how-to-send-ethernet-frames-in-java-without-tcp-ip-stack',
];

$_SESSION = [
    '__flash' => [],
];