Question

Je suis à la recherche d'une bibliothèque Java qui me donnera l'accès aux trames Ethernet premières, à la fois pour la lecture et de les envoyer. Mon objectif final est de créer un scanner réseau BACnet Ethernet.

S'il vous plaît, note, je ne cherche pas TCP \ IP.

Quelqu'un sait d'une bonne bibliothèque pour le faire?

Était-ce utile?

La solution

Peut-être Jpcap aide peut. Notez qu'il y a un projet Sourceforge avec le même nom, mais il ne semble pas être le même projet.

Voici quelques exemples de code (du didacticiel de la bibliothèque) qui utilise Jpcap pour envoyer un paquet TCP et une trame Ethernet:

Modifier. Le code exemple ne crée un TCPPacket, mais vous pouvez créer une Packet régulière à la place

//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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top