[ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 13.01.09
Prihlásený: 15.10.13
Príspevky: 113
Témy: 38 | 38
NapísalOffline : 14.03.2010 15:43 | pcap a memcpy

Ahoj ludia, mam tento kod:
Kód:
            struct pcap_pkthdr *header[3];
   const u_char *data[2];
   struct pcap_pkthdr *PHEADER;;
   const u_char *PDATA;
   int res, i;
   pcap_t *fp;
   
   // otvorenie suboru
   if ((fp = pcap_open_offline("eth_a.pcap", errbuf)) == NULL)
   {
      printf("Nejde otvorit");
   }
   // paketovanie
   
   header[0] = (pcap_pkthdr *) malloc(sizeof(pcap_pkthdr));
   header[1] = (pcap_pkthdr *) malloc(sizeof(pcap_pkthdr));
   header[2] = (pcap_pkthdr *) malloc(sizeof(pcap_pkthdr));

   res = pcap_next_ex(fp, &PHEADER, &PDATA);
   memcpy((void *)&header[0], (void *)&PHEADER, sizeof(pcap_pkthdr));
   res = pcap_next_ex(fp, &PHEADER, &PDATA);
   memcpy((void *) &header[1], (void *) &PHEADER, sizeof(pcap_pkthdr));
   res = pcap_next_ex(fp, &PHEADER, &PDATA);
   memcpy((void *) &header[2], (void *) &PHEADER, sizeof(pcap_pkthdr));


problem je ten, ze chcem mat v poli ulozenu strukturu header pre kazdy paket, ale ked precitam cez pcap_next_ex(), tak sa mi prepisu predosle precitane na hodnotu sucasne precitanej. Preto som tam dal memcpy, ale aj tak to nefunguje, lebo ked si dam vypis obsahu pola header, tak vsade je to iste....
Vie niekto poradit kde robim chybu ?
D


_________________
NB: kedysi: MSI GX620, LENOVO SL510 teraz: Lenovo TP Edge E520
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 21.03.2010 0:20 | pcap a memcpy

Vieš čo robí to (void *) &PHEADER ?


Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 13.01.09
Prihlásený: 15.10.13
Príspevky: 113
Témy: 38 | 38
Napísal autor témyOffline : 21.03.2010 13:53 | pcap a memcpy

chrono píše:
Vieš čo robí to (void *) &PHEADER ?

uz som to skusal aj bez toho (void *)... aj tak som to uz poriesil inym sposobom


_________________
NB: kedysi: MSI GX620, LENOVO SL510 teraz: Lenovo TP Edge E520
Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 21.03.2010 13:54 | pcap a memcpy

on myslel to, ze ten & je tam navyse, ked uz to je smernik.


Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 13.01.09
Prihlásený: 15.10.13
Príspevky: 113
Témy: 38 | 38
Napísal autor témyOffline : 22.03.2010 14:34 | pcap a memcpy

myslim ze bez tych & mi to neslo skompilovat


_________________
NB: kedysi: MSI GX620, LENOVO SL510 teraz: Lenovo TP Edge E520
Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 22.03.2010 14:34 | pcap a memcpy

to bude tym, ze PHEADER je uz definovany ako smernik, nemusis tam davat este aj tu hviezdicku


Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 13.01.09
Prihlásený: 15.10.13
Príspevky: 113
Témy: 38 | 38
Napísal autor témyOffline : 22.03.2010 14:40 | pcap a memcpy

ktoru konkretne ? je ich tam vela....
v tom voidovi ?
hmmm...dost mozne...uz mi je to ale jedno :)


_________________
NB: kedysi: MSI GX620, LENOVO SL510 teraz: Lenovo TP Edge E520
Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 22.03.2010 14:42 | pcap a memcpy

struct pcap_pkthdr *PHEADER; - tuto


Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 13.01.09
Prihlásený: 15.10.13
Príspevky: 113
Témy: 38 | 38
Napísal autor témyOffline : 22.03.2010 17:35 | pcap a memcpy

tak si to zhrnme:
struct pcap_pkthdr *PHEADER - smernik na strukturu
(void *) &PHEADER - adresa smernika pretypovana na smernik na voida ?
tak potom davam do tej funkcie trojity smernik ?


_________________
NB: kedysi: MSI GX620, LENOVO SL510 teraz: Lenovo TP Edge E520
Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 22.03.2010 17:44 | pcap a memcpy

*PHEADER znamena prakticky smernik na smernik, kedze to P v nazve signalizuje, ze to uz pointer je.
definicia je asi takato :
typedef struct blabla {
.
.
.
} HEADER,*PHEADER;
cize pre projekt na siete 2 sa hodi zrejme skor toto (ja som ani nepouzil pcap, nebolo ho treba) :
struct pcap_pkthdr PHEADER - mernik na strukturu
(void *)PHEADER - smernik pretypovany na smernik na voida ?


Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 13.01.09
Prihlásený: 15.10.13
Príspevky: 113
Témy: 38 | 38
Napísal autor témyOffline : 22.03.2010 19:21 | pcap a memcpy

sak ten tvoj kod to jak ked vysypes struhanku :)
inac ten PHEADER to tusim neni tak definovane, to som si nazval tak premennu...


_________________
NB: kedysi: MSI GX620, LENOVO SL510 teraz: Lenovo TP Edge E520
Offline

Užívateľ
Užívateľ
pcap a memcpy

Registrovaný: 19.09.06
Prihlásený: 19.02.26
Príspevky: 749
Témy: 31 | 31
Bydlisko: Ružomberok&...
NapísalOffline : 22.03.2010 19:31 | pcap a memcpy

aha, az teraz som si vsimol ze to nie nazov typu, ale nazov premennej :oops: :oops: prepac za zmetocne info, predpokladal som standardne nazvoslovie a spravanie funkcii


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 26.03.2010 19:00 | pcap a memcpy

Aby som sa k tomu ešte trochu vrátil. Tým volaním memcpy skopíruješ adresu tých dát (a ešte nejaké fáta k tomu) a nie samotné dáta. Takže ten znak & je tam navyše.


 [ Príspevkov: 13 ] 


pcap a memcpy




© 2005 - 2026 PCforum, edited by JanoF