Ahojte,
robím program v ktorom analyzujem rámec, ktorý si odchytím pomocou programu Wireshark. Zachytený rámec môže byť typu Ethernet II, IEEE 802.3 - LLC atď..keď je typu Ethernet II tak môže byť napr IP, ARP atď.. a keď je napríklad IP môže obsahovať vnorený protokol UDP alebo TCP alebo iné . Mám vytvorenú triedu Paket v ktorej si nastavím cieľovú a zdrojovú MAC adresu a zistím akého typu daný rámec je. A potom mám ďalšie triedy Ethernet II, IEEE 802.3 - LLC..ktoré majú svoje ďalšie vlastné pridané parametre, ktore postupne dopĺňajú..takisto aj IP ARP a ostatné čo som spomenul. Ale asi niečo robím zle lebo pri dedení mi to padne. Chcel by som sa opýtať čím to bude?
//tu si načítam paket a vytvorím nový objekt
while(pcap.nextEx(header, jbuffer) == Pcap.NEXT_EX_OK){ //citam az kym nie som na konci
PcapPacket packet = new PcapPacket(header,jbuffer);
Paket paket = new Paket(frame_number,packet);
...
}
//konštruktor v triede Paket
public Paket(int frame, PcapPacket packet){
this.frame = frame;
this.packet = packet;
setAdress(packet); //nastaví MAC adresy
setSize(packet); //zistí veľkosť
setTyp(packet); //Ethernet II, IEEE 802.3..
if(getTyp().equals("Ethernet II")){
Ethernet ethernet1 = new Ethernet(frame_number,packet);
}
else if(getTyp().equals("IEEE 802.3 - LLC")){
LLC llc1 = new LLC(frame_number,packet);
}
else if(getTyp().equals("IEEE 802.3 - SNAP")){
SNAP snap1 = new SNAP(frame_number, packet);
}
else if(getTyp().equals("IEEE 802.3 - Raw")){
RAW raw1 = new RAW(frame_number, packet);
}
}
a keď je to napr EtherType Ethernet II tak idem do triedy Ethernet kde je konštruktor :
public Ethernet(int frame_number, PcapPacket packet) {
super(frame_number, packet); //vyhodi chybu
setEtherType(packet);
setIP(packet);
}
Ak by ste mi vedeli pomôcť bol by som vďačný. Vopred ďakujem.