4

読み取りと送信の両方で生のイーサネット フレームにアクセスできる Java ライブラリを探しています。私の最終的な目標は、BACnet イーサネット ネットワーク スキャナーを作成することです。

注意してください、私は TCP\IP を探しているわけではありません。

これを行うための優れたライブラリを知っている人はいますか?

4

1 に答える 1

6

多分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();
于 2010-08-27T14:56:32.603 に答える