Nešto je pošlo po zlu prilikom učitavanja potpune inačice ove stranice. Pokušajte nasilno osvježiti ovu stranicu kako biste otklonili grešku.

[MREPRO] 4. domaća zadaća - 2019/2020

Gussy

Sasha_Triceps Ocu stici do sutra napisati sve? Ima milijun stvari koje se trebaju implementirati.


Sashat_Triceps

huba buba Pa ovisi koliko si napravio, najviše vremena će ti uzet obrada tekstualne datoteke za \n -ove. Poslije toga ovo ostalo ide glatko


Gussy

Sasha_Triceps Kako si riješio taj problem sa zamjenjivanjem \n sa \r\n jer se ne treba “samo” zamijeniti kako oni kazu nego moras dodati jos jedan znak i onda cijela ta obrada ode u kurac.


Sashat_Triceps

huba buba Učitaš podatke iz filea u neko polje. Zatim u petlji ides bajt po bajt kroz to polje i stavljaš bajtove u buffer za slanje. Kad naiđes na \n , u istoj iteraciji stavi \r zatim \n u buffer.


Gussy

Sasha_Triceps Jel misliš sve podatke iz filea staviti u jedno polje?


Cvija

A kako se postiže konkurentnost?

Jel moram raditi one forkove pa da svako dijete obrađuje svakog klijenta ili postoji neki drugi način?
U TFTP-u u knjizi se spominje neka konkurentnost mijenjanjem portova prilikom slanja paketa


Sashat_Triceps

Cvija Sa dretvama ti je najjednostavnije, svaka dretva obrađuje jednog klijenta i stvara novi socket. S time postižeš i konkurentnost opisanu u tftpu ( tftp server prima zahtjeve na jedan port, ali odgovara na drugom)


Cvija

A kako si provjeravao je li netascii ili octet u poruci koju prima prilikom RRQ?

Jer meni nekako sve proguta u filename


Cvija

Cvija Napravio sam strukture koje pokrivaju svaki dio
Ovako mi izgleda struktura koja pokriva dio za primanjem zahtjeva:

struct tftp_rrq{
uint16_t code;
uint8_t filename[512];
uint8_t zero;
uint8_t mode[30];
uint8_t zero2;
};


Sashat_Triceps

Cvija Ovako mi izgleda struktura za primanje zahtjeva :
`
struct RRQbuffer{
u_int16_t code;
char fileNameAndMode[100];
};

`
Kasnije u kodu sa strtok-om i u programu izdvojis filename i mode, a strcmp-om usporedis string u modeu s “netascii”, odnosno “octet”


Gussy

Cvija problem ti je što taj rrq paket nema određenu dužinu i koliko sam ja razumio iz specifikacije, ta dva “zero” dijela paketa su zapravo \0.


Cvija

Sasha_Triceps E vidiš, kad tako primim podatak, problem mi je što se u filenameimode spremi samo filename
Mode se ne spremi


Sashat_Triceps

huba buba Ne , mislim da učitavaš po dijelovima u polje. Fileovi su reda veličina nekoliko MB što uzima dosta memorije ako bi ga cijelog išao učitavat. Uzmeš polje od tipa 4KB, učitaš dio podataka u njega i obrađuješ ga. Kad ga obradiš uzmeš novi dio itd itd


Cvija

Cvija [EDIT] riješio
Ako netko ima takav problem, može npr. uzeti strlen od toga i na to mjesto postaviti neki delimiter s kojim će kasnije podijeliti string


Cvija

Treba li program nakon primanja datoteke se zatvoriti ili nastaviti s radom?


angello2

Nisam napiso ovu zadacu na vrijeme misleci da nije obavezno sve predat al jbg sad imam 1 dan za napisat ovaj tftp, jeste vi samo isli po onom tftpserveru koji izade na necijem githubu kad guglas tftpserver ili ste fakat samostalno ovo pisali? Cini mi se pun kurac komplicirano a nemam bas puno vremena, imate neki hint?


Sljedeća stranica »