読み取りと送信の両方で生のイーサネット フレームにアクセスできる Java ライブラリを探しています。私の最終的な目標は、BACnet イーサネット ネットワーク スキャナーを作成することです。
注意してください、私は TCP\IP を探しているわけではありません。
これを行うための優れたライブラリを知っている人はいますか?
読み取りと送信の両方で生のイーサネット フレームにアクセスできる Java ライブラリを探しています。私の最終的な目標は、BACnet イーサネット ネットワーク スキャナーを作成することです。
注意してください、私は TCP\IP を探しているわけではありません。
これを行うための優れたライブラリを知っている人はいますか?
多分Jpcapが役に立ちます。同じ名前の Sourceforge プロジェクトがあることに注意してください。ただし、同じプロジェクトではないようです。
Jpcap を使用して TCP パケットとイーサネット フレームを送信するサンプル コード (ライブラリのチュートリアルから) を次に示します。
編集: サンプル コードは を作成しますが、代わりにTCPPacket
通常の を作成することもできます。Packet
//open a network interface to send a packet to
JpcapSender sender=JpcapSender.openDevice(devices[index]);
//create a TCP packet with specified port numbers, flags, and other parameters
TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);
//specify IPv4 header parameters
p.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_TCP,
InetAddress.getByName("www.microsoft.com"),InetAddress.getByName("www.google.com"));
//set the data field of the packet
p.data=("data").getBytes();
//create an Ethernet packet (frame)
EthernetPacket ether=new EthernetPacket();
//set frame type as IP
ether.frametype=EthernetPacket.ETHERTYPE_IP;
//set source and destination MAC addresses
ether.src_mac=new byte[]{(byte)0,(byte)1,(byte)2,(byte)3,(byte)4,(byte)5};
ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};
//set the datalink frame of the packet p as ether
p.datalink=ether;
//send the packet p
sender.sendPacket(p);
sender.close();