Mrezno racunarstvo 2011/12





Sa časova vežbi:



JANUAR 2012. rezultati praktičnog dela ispita

Rezultati Teorije 2

VAŽNA OBAVEŠTENJA:
  • Svi studenti zainteresovani za učešće na studentskoj konferenciji u aprilu u Rumuniji treba što pre da se jave profesoru Tubi.
  • Profesor će sve svoje ispite u februarskom roku odrzati u sredu, 29.02. od 19h u sali 706.


Uvod: Mreže (zadaci)
Stream-ovi (primeri)
Niti (primeri)
Domaći zadatak 1:
  1. Modifikovati primer6_ProizvodjacPotrosac tako da radi i za kutiju kapaciteta većeg od 1. Kapacitet kutije se zadaje prilikom njenog kreiranja.
  2. Napisati program koji, koristeći niti, radi sledeće: polazi se od niza celih brojeva, a na izlazu treba ispisati niz čiji se svaki element dobija tako
    što se odgovarajući element polaznog niza najpre pomnoži sa 2, pa na tako dobijeni rezultat doda 1. Npr. ako je polazni niz: 1, 2, 3, 4, rezultujući je: 3 (=1*2+1), 5 (=2*2+1), 7 (3*2+1), 9 (=4*2+1).

    2. zadatak, smernice: Kao uzor delimično može poslužiti primer6_ProizvodjacPotrosac.
    Napisati pomoćnu klasu (Broj) koja, pored samog broja, sadrži i indikatore da li je on već pomnožen sa 2 i uvećan za 1.
    Ključni metodi klase služe da, pod odgovarajućim uslovima, tekući broj pomnože sa dva, odnosno na njega dodaju 1. Koriste wait() i notifyAll()
    Potrebno je napisati i dve klase koje predstavljaju niti (jednu za množenje, a drugu za inkrementiranje).
    U main-niti kreirati i startovati n niti za množenje i n za inkrementiranje, gde je n dimenzija polaznog niza. Sačekati da sve niti završe svoj posao, pa odštampati dobijeni rezultat.

Rešenje domaćeg zadatka
Thread Pools (primer)
IP adrese (primeri)
JAR.pdf,    3a_dodatna_uputstva.pdf,     primer 3a (InetAplet)

Domaći zadatak 2:
  • proguglati malo pa umesto zipovanja vršiti otpakivanje .zip fajlova u programu koji će biti nalik na primer za Thread Pools.

Rešenje domaćeg zadatka (Dokumentacija - Code Sample 1)
Soketi za klijente (primeri)
        finger client (Napraviti .jar fajl za aplikaciju, npr. "finger.jar", na način opisan u uputstvu JAR.pdf, prekopirati ga na alas i pokrenuti npr. sa: java -jar finger.jar localhost mr00007)
        Za testiranje echo klijenta koristiti EchoServerNIO.zip ili napisati svoj echo server.
Serverski soketi (primeri)
Vežba:
  • Za echo protocol (RFC 862) napisati klijentski program sa odvojenim nitima za slanje i primanje podataka od servera.
Domaći zadatak 3:
  • Modifikovati primer 2 (HighPortScanner) za klijentske sokete tako da glavna nit najpre ispiše datum i vreme početka izvršavanja,
    obradi argument komandne linije, a onda pokreće pomoćnu nit za skeniranje svih portova i čeka da korisnik pritisne Enter za kraj.
    Kada korisnik pritisne Enter, na standardni izlaz se ispisuje broj porta kod kog se stalo sa ispitivanjem, kao i tekući datum i vreme.
    Potom se program završava.
    Pomoćna nit, svaki put kada pronađe server na nekom portu, ispisuje i tekući datum i vreme kada se to desilo.
    Dopušteno je u klase dodavati pomoćne atribute i metode po potrebi.
  • Rok za slanje rešenja domaćeg zadatka 3 je četvrtak, 17.11.2011. do 23:59h.
  • Rešenja slati sa svog školskog naloga. Sva autentična rešenja stiču pravo na jednu od dve vrste bonusa o kojima smo se dogovorili
    na vežbama. Materijalne nagrade mogu se podići samo u narednom terminu vežbi :)
URL-prezentacija, URL-nastavak(.pdf) (primeri). Servlet za testiranje primera 6 (DMoz): Proba_source.zip, Proba.zip-ovaj otpakovati i smestiti na server
HTML in Swing (primeri)

PRIMER KOLOKVIJUMA
bitne teme: soketi, niti, parsiranje HTML-a
Recimo: klijent šalje serveru URL HTML-strane, server obrađuje svaku novu konekciju u posebnoj niti, a da bi odgovorio klijentu, mora da parsira HTML-stranu čiji je URL od njega dobio.

  • NAPOMENA: (Safe)BufferedReader, PrintWriter
    (Safe)BufferedReader: Od vremena pisanja Haroldove knjige do sada,
    promenjena je implementacija metoda readLine() klase BufferedReader iz Javine biblioteke,
    tako da se on sada ponaša kao što bi trebalo:
        
        /**
         * Reads a line of text.  A line is considered to be terminated by any one
         * of a line feed ('\n'), a carriage return ('\r'), or a carriage return
         * followed immediately by a linefeed.
         *
         * @return     A String containing the contents of the line, not including
         *             any line-termination characters, or null if the end of the
         *             stream has been reached
         *
         * @exception  IOException  If an I/O error occurs
         */
    
        public String readLine() throws IOException;
    
    te više nema potrebe koristiti Haroldovu klasu SafeBufferedReader.

    PrintWriter: metod println() se ponaša na sledeći način:
       /**
         * Terminates the current line by writing the line separator string.  The
         * line separator string is defined by the system property
         * line.separator, and is not necessarily a single newline
         * character ('\n').
         */
    
    Koristi se vrednost koju sistemsko svojstvo line.separator ima u trenutku kreiranja toka.

    Ukoliko je protokolom eksplicitno zadata sekvenca kojom treba završavati linije,
    umesto PrintWriter može se koristiti OutputStreamWriter, a linije slati metodom
    write(<sadrzaj_linije> + <oznaka_kraja_linije>)
Dopunjen tekst zadatka, rešenje, SimpleDateFormat (upotreba). Originalna adresa: http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/

Rezultati praktičnog dela kolokvijuma

Neblokirajući I/O (primeri)

UDP (primeri)

JANUAR 2012. rezultati praktičnog dela ispita

Rezultati Teorije 2

VAŽNA OBAVEŠTENJA:
  • Svi studenti zainteresovani za učešće na studentskoj konferenciji u aprilu u Rumuniji treba što pre da se jave profesoru Tubi.
  • Profesor će sve svoje ispite u februarskom roku odrzati u sredu, 29.02. od 19h u sali 706.




Vrh strane