2013-04-24 25 views
8

我的Java應用程序應該控制直接連接到我的計算機網絡接口(Ubuntu和Windows)的外部設備(EtherCAT總線技術)。沒有其他網絡設備連接。通信已經在標準IEEE 802.3以太網幀上完成,沒有IP協議棧。如何在沒有TCP/IP協議棧的Java中發送以太網幀

用於發送數據

實施例:

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協議棧是強制性的。我對嗎?

是否有其他想法與低級以太網幀進行通信?我更喜歡像netty.io這樣的純java庫,如果存在的話。

當然,JNA/JNI也是一個選項。但我不想寫C代碼。

其他選擇?

+0

您是否找到任何解決方案? – arrowman 2017-03-09 22:04:52

回答

3

這是我能找到的選項:

我也看到了註釋,以jNetPcap應該是效果線程安全的,但實際上它不是;即,當與多個線程一起使用時,它是錯誤的。