ArrayIndexOutOfBoundsException: 0

ArrayIndexOutOfBoundsException: 0

I'am a newbie to java, i have written a small code of jpcap and i get following error, any help will be appreciated,

error: run: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at jpcap.Jpcap.(Jpcap.java:34) at jpcap.Jpcap.main(Jpcap.java:155) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)

here is my code

package jpcap;
import dao.DAO;
import java.io.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
import jpcap.packet.EthernetPacket;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
import jpcap.packet.UDPPacket;


public class Jpcap {

    JpcapCaptor captor = null;
     int index = 0;
    jpcap.NetworkInterface[] devices;

    {
         devices = JpcapCaptor.getDeviceList();

        try{
        //Open an interface with openDevice(NetworkInterface intrface, int snaplen, boolean promics, int to_ms)
         captor = JpcapCaptor.openDevice(devices[index], 65535, false, 20);
         captor.setFilter("udp", true);
        }catch(IOException e){}
    }


       public void sendBroadCast(Packet pack) {
        try {
            InetAddress src = null;  
            InetAddress dest = null;
            if (pack instanceof IPPacket) {
                IPPacket ipp = (IPPacket)pack;
                src = ipp.dst_ip;
                dest = ipp.src_ip;
            }

            //obtain MAC address of the default gateway  
            InetAddress pingAddr=InetAddress.getByName(dest.toString());
            captor.setFilter("udp and dst host "+pingAddr.getHostAddress(),true);  
            byte[] gwmac=null;  
            while(true){  
                Packet ping=captor.getPacket();  
                if(ping==null){  
                    System.out.println("cannot obtain MAC address of default gateway.");  

                }else if(Arrays.equals(((EthernetPacket)ping.datalink).dst_mac, devices[index].mac_address)) {
                    continue;
                }  
                gwmac=((EthernetPacket)ping.datalink).dst_mac;  
                break;  
            }  

            //Send packet
             JpcapSender sender=JpcapSender.openDevice(devices[index]);

        UDPPacket sendPacket=new UDPPacket(12345,54321);//UDPPacket(src_port,dest_port);


        sendPacket.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_UDP,
            src,dest);
                String outData = DAO.getBroadCast();
        sendPacket.data=outData.getBytes();

        EthernetPacket ether=new EthernetPacket(); //get ethernet packet
        ether.frametype=EthernetPacket.ETHERTYPE_IP; //set frame type as IP
                //setting src nd dest MAC address
        ether.src_mac= devices[index].mac_address;  
        ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};
                //set datalink frame of packet as ether
        sendPacket.datalink=ether;

        for(int i=0;i<10;i++) {
                sender.sendPacket(sendPacket);
            }

        } catch (UnknownHostException ex) {
            Logger.getLogger(Jpcap.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {

        }


    }
    public static void main(String[] args) {


          // set index of the interface that you want to open.


        Jpcap j = new Jpcap();
        j.receivePack();


    }
View Answers









Related Tutorials/Questions & Answers:

Ads