Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Слични документи
Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Uvod u računarstvo 2+2

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Microsoft PowerPoint - vjezbe_04.ppt

Računarski praktikum I - Vježbe 11 - Funktori

Računarski praktikum I - Vježbe 01 - Uvod

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 09 - this, static

Programiranje za UNIX Okruženje unix procesa

Računarske mreže i mrežne tehnologije 10. termin 1. TRANSPORTNI SLOJ Transportni sloj nije još samo jedan od mnogih slojeva jer je njegova uloga sama

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Strukture predavač: Nadežda Jakšić

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programski jezik C

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Datoteke predavač: Nadežda Jakšić

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1

Slide 1

070-ALIP2-udzbenik.indb

Sveucilište u Zagrebu

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Državno natjecanje / Osnove informatike Srednje škole Zadaci U sljedećim pitanjima na odgovore odgovaraš upisivanjem slova koji se nalazi ispred

Microsoft Word - 11 Pokazivaci

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Uvod u PHP

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Microsoft PowerPoint - Bitovi [Compatibility Mode]

07_PJISP_II_Predavanja

Microsoft PowerPoint - 06 Uvod u racunarske mreze.ppt

Programiranje 1 3. predavanje prošireno Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predava

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 10 Zvonimir Bujanović Luka Grubišić Vinko Petričević

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

PowerPoint Presentation

Državna matura iz informatike

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Uvod u računarstvo 2+2

INF INFORMATIKA INF.35.HR.R.K1.24 INF D-S

Microsoft PowerPoint - podatkovni promet za objavu.pptx

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Funkcije predavač: Nadežda Jakšić

PowerPoint Presentation

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

Microsoft Word - 6. RAZRED INFORMATIKA.doc

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Tutoring System for Distance Learning of Java Programming Language

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Računarski praktikum I - Vježbe 06 - Standard Template Library (2)

Objektno orjentirano programiranje

Programski jezici i strukture podataka

INF INFORMATIKA INF.27.HR.R.K1.20 INF D-S INF D-S027.indd :50:41

MergedFile

POSLOVNI INFORMACIONI SISTEMI I RA^UNARSKE

PowerPoint Presentation

Prikaz znakova u računalu

ZIS

Microsoft Word - IP_Tables_programski_alat.doc

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Programiranje 2 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević February 23, 2008

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

Programiranje 1

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Grananje u programu predavač: Nadežda Jakšić

SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Kristijan Perković Mrežna igra Potapanje brodova u programskom jeziku C++ ZA

JMBAG Ime i Prezime Mreže računala Završni ispit 16. veljače Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter.

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

03 SUBP

PASCAL UVOD 2 II razred gimnazije

PowerPoint Presentation

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

PowerPoint Presentation

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK PROGRAMIRANJE I PROGRAMSKI JEZICI PROGRAMSKI JEZIK C -SKRIPTA ZA INTERNU UPOTREBU-

Uvod u takmičarsko programiranje

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Microsoft Word - WP_kolokvij_2_rjesenja.doc

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

COMARC/A Format

ALIP1_udzb_2019.indb

P11.2 Izbor instrukcija, IBURG

PHP kod

PuTTY CERT.hr-PUBDOC

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова

Транскрипт:

Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević

Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu operacijski sustav i hardware. Aplikacijski sloj u internetskom protokolarnom stogu obuhvaća 3 sloja referentnog modela: sloj sesije uspostava konekcije između 2 računala prezentacijski sloj konverzija podataka tako da budu pogodni za prijenos preko mreže aplikacijski sloj konkretan način komunikacije između 2 računala, svojstven samo našoj aplikaciji SocketAPI kolekcija struktura podataka i funkcija u programskom jeziku C namjenjena mrežnom programiranju. 13.10.2014. Mreže računala - Vježbe 03 2

Ponavljanje: varijable i adrese Svaka deklarirana varijabla zauzima određeni raspon memorijskih adresa. Veličinu zauzete memorije doznajemo operatorom sizeof. int a; char b; double c; printf( "%d %d %d", sizeof(a), sizeof(b), sizeof(c) ); // tipicno ispisuje: 4 1 8 Adresu varijable doznajemo operatorom &. Adresu sprememo u specijalnu varijablu koju zovemo pointer ili pokazivač. int a; double c; int *pa = &a; double *pc = &c; pc = &a; // compile error! Pointeri nisu istog tipa. pc = (double *) &a; // OK. Pretvorba putem cast operatora. 13.10.2014. Mreže računala - Vježbe 03 3

Ponavljanje: varijable i adrese Pomoću operatora * možemo pristupati i modificirati sadržaj varijable na koju pokazuje pointer. Pointer tijekom izvođenja programa može pokazivati na različite varijable. Adresu varijable ne možemo promijeniti. int a = 5, b = 3; int *p; p = &a; printf( "a=%d, *p=%d, b=%d\n", a, *p, b ); // ispis: 5 5 3 *p = 7; printf( "a=%d, *p=%d, b=%d\n", a, *p, b ); // ispis: 7 7 3 p = &b; printf( "a=%d, *p=%d, b=%d\n", a, *p, b ); // ispis: 7 3 3 printf( "&a=%p, p=%p &b=%p\n", &a, p, &b ); // ispis (npr) &a=7ffff428, p=7ffff42c &b=7ffff42c 13.10.2014. Mreže računala - Vježbe 03 4

Ponavljanje: polja i strukture Pointerska aritmetika: niz + n = &niz[0] + n = &niz[n] int niz[5] = {1, 2, 3, 4, 5}; int *p = &niz[1]; *p = 7; printf( "niz[1] = %d", niz[1] ); // ispis: 7 p = p+2; *p = 9; ++p; *p = 6; printf( "niz[3]=%d niz[4]=%d", niz[3], niz[4] ); // ispis: 9 6 Ako pokazivač p pokazuje na strukturu čiji je element e, onda do vrijednosti elementa e dolazimo pomoću p->e. typedef struct { int i; char c; } STR; STR s, *p; p = &s; s.i = 7; p->c = 'A'; printf( "s.i = %d, s.c = %c", s.i, s.c ); // ispis: 7 A 13.10.2014. Mreže računala - Vježbe 03 5

SocketAPI: Header datoteke Svaka funkcija iz SocketAPI treba neku header datoteku. Jednostavnosti radi, možemo uvijek uključiti sve koje bi nam mogle zatrebati: #include <sys/socket.h> #include <sys/types.h> #include <netdb.h> #include <netinet/in.h> #include <unistd.h> #include <arpa/inet.h> 13.10.2014. Mreže računala - Vježbe 03 6

Rad sa mrežnim adresama 3 načina reprezentacije adresa: host-name npr. www.google.com IP-adresa u dekaskom zapisu npr. 192.84.105.1 IP-adresa u 32-bitnom binarnom zapisu Interno se sav rad sa adresama mora odvijati u 32- bitnom binarnom zapisu. Postoje funkcije za konverziju iz jednog zapisa u drugi. 13.10.2014. Mreže računala - Vježbe 03 7

Rad sa mrežnim adresama Binarni IP-zapis čuva se u specijalnoj strukturi: struct in_addr { unsigned long s_addr; }; host-name i dekadski IP-zapis čuvaju se kao stringovi. 13.10.2014. Mreže računala - Vježbe 03 8

dekadski IP binarni IP int inet_aton( const char *dekadskiip, struct in_addr *binarniip ); Povratna vrijednost: 0 ako dekadska adresa nije valjana, ne-nula inače. Mnemotehnika: inet = internet, a = ASCII, n = network Primjer: char dekadskiip[] = "161.53.8.14"; struct in_addr binarniip; if( inet_aton( dekadskiip, &binarniip ) == 0 ) printf( "%s nije dobro zadana adresa\n", dekadskiip ); 13.10.2014. Mreže računala - Vježbe 03 9

binarni IP dekadski IP char *inet_ntoa( struct in_addr binarniip ); Povratna vrijednost: Pointer na memoriju unaprijed alociranu unutar funkcije. Na toj adresi je dekadska IP-adresa. Mnemotehnika: inet = internet, a = ASCII, n = network Primjer: char dekadskiip[] = "161.53.8.14"; struct in_addr binarniip; if( inet_aton( dekadskiip, &binarniip ) == 0 ) printf( "%s nije dobro zadana adresa\n", dekadskiip ); char natragudekadskiip[20]; strcpy( natragudekadskiip, inet_ntoa( binarniip ) ); printf( "%s\n", natragudekadskiip ); 13.10.2014. Mreže računala - Vježbe 03 10

host-name binarni IP koristi se specijalna struktura: struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; #define h_addr h_addr_list[0] h_name službeni host-name računala h_aliases polje alternativnih host-name-ova računala (zadnji je NULL) h_addrtype tip adrese, kod nas uvijek AF_INET h_length duljina adrese u byteovima, kod nas uvijek 4 h_addr_list polje binarnih zapisa IP-adresa računala (zadnja je NULL) h_addr prvi binarni zapis u gornjem polju 13.10.2014. Mreže računala - Vježbe 03 11

host-name binarni IP struct hostent *gethostbyname( const char *hostname ); Prima host-name kao string, vraća popunjenu hostent strukturu ili NULL ako je došlo do greške. U tom slučaju, poziv funkcije herror će na ekran ispisati poruku o greški. Struktura koja se vraća je unaprijed alocirana unutar funkcije gethostbyname! Primjer: struct hostent *hostinfo; hostinfo = gethostbyname( "www.yahoo.com" ); if( hostinfo == NULL ) herror( "gethostbyname" ); printf( "Sluzbeni host-name: %s\n", hostinfo->h_name ); struct in_addr binarniip=*((struct in_addr *)hostinfo->h_addr); char *dekadskiip = inet_ntoa( binarniip ); printf( "Dekadska IP-adresa: %s\n", dekadskiip ); 13.10.2014. Mreže računala - Vježbe 03 12

binarni IP host-name struct hostent *gethostbyaddr( const char *binarniip, int duljina, int tipadrese ); duljina = sizeof( binarniip ) tipadrese = AF_INET (za nas, inače može biti i nešto drugo...) povratna vrijednost popunjena hostent struktura struct hostent *hostinfo; struct in_addr binarniip; inet_aton( "161.53.8.14", &binarniip ); // error-check... hostinfo = gethostbyaddr( (const char *)&binarniip, sizeof( binarniip ), AF_INET ); if( hostinfo == NULL ) herror( "gethostbyaddr" ); printf( "Sluzbeni host-name: %s\n", hostinfo->h_name ); char *dekadskiip = inet_ntoa( *((struct in_addr *)hostinfo->h_addr) ); printf( "Dekadska IP-adresa: %s\n", dekadskiip ); 13.10.2014. Mreže računala - Vježbe 03 13

Zadatak 3 Napišite program koji se ponaša slično mrežnom alatu nslookup. Program sa komandne linije treba dobiti host-name nekog računala. Program treba ispisati sve host-name-ove i sve IP-adrese tog računala. Ako host-name nije bio dobar, program treba ispisati poruku o greški. 13.10.2014. Mreže računala - Vježbe 03 14