23
Mrežno programiranje

Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Mrežno programiranje

Page 2: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

O računalnim mrežama

dva ili više međusobno povezanih uređaja koji mogu razmjenjivati podatke

Ethernet – IEEE 802.3

načini spajanja (najčešći):

UTP kablovima

bežično (wireless)

protokoli:

IPv4 – 4 8-bitovna broja

IPv6 – 8 16-bitovnih brojeva

hostname = simboličko ime računala

Page 3: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Mrežna komunikacija

vrste računala

poslužitelji

klijenti

razmjena paketa

zaglavlje (header)

IP adresa primatelja, IP adresa pošiljatelja,

protokol, duljina,…

podatak (data)

Page 4: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Mrežna komunikacija

Page 5: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Mrežna komunikacija

algoritmi usmjeravanja paketa:

Dijkstrin algoritam, algoritam poplave, algoritam stalnog usmjeravanja, algoritam nasumičnog usmjeravanja,…

Page 6: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Razine mreže

Fizički sloj (driveri,...)

Mrežni sloj (IP,...)

Trtansportni sloj (TCP, UDP...)

Aplikacijski sloj (FTP, Telnet, HTTP,...)

Page 7: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Portovi

više aplikacija koje u nekom trenutku šalju ili primaju podatke s mreže (web, ftp, peer-to-peer)

port – "vrata" kroz koja aplikacija prima /šalje podatke

broj portova: 65536

prvih 1024 porta zauzeti

http: port 80

ftp: port 20 i 21

Telnet: port 23

Page 8: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Modul socket

modul: socket

funkcije metoda socket:

gethostname() – host name računala na kojem

se funkcija izvodi

gethostbyname(name) – IP adresa računala čiji

je hostname name

gethostbyaddr(ipadress) – podaci o računalu

na osnovu IP adrese

Page 9: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Modul socket - primjer

>>> from socket import *

>>> gethostbyname('www.carnet.hr')

'161.53.160.25'

>>> gethostbyaddr('161.53.160.25')

('www.CARNet.hr', [], ['161.53.160.25'])

Page 10: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Socket

komunikacija point-to-point

TCP protokol

podaci putuju "kanalom"

na ishodišnom računalu pišemo podatke na kraj

kanala (socket)

na odredišnom računalu podatke čitamo na

drugom kraju kanala (socketa)

putovanje kanala kanalom nas ne zanima

Page 11: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Socket

socketi

Page 12: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer jednostavne komunikacije poslužitelj

kreira socket na nekom portu

kreira novi socket za komunikaciju s klijentom

čita poruku sa socketa

sva slova u poruci zamijeni odgovarajućim

velikim slovima

piše poruku na socket

zatvara socket

klijent

kreira novi socket za komunikaciju sa

serverom

učitava poruku sa standardnog ulaza

piše poruku na socket

čita poruku sa socketa

ispisuje poruku na standardni izlaz

zatvara socket

čeka zahtjev klijenta

Page 13: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Metode klase socket bind((host, port)) – povezuje (stvara) socket s računalom

(poslužiteljem)

listen(n) – čeka spajanje klijenta, n – najveći broj klijenata koji mogu čekati u redu (najčešće 5)

accept() – prihvaća klijenta te nakon spajanja vraća par (conn, address) pri čemu je:

conn - socket objekt koji će omogućavati komunikaciju s klijentom

adress – adresa klijenta

connect((host, port)) – spaja se na zadani port određenog hosta (klijent)

send(s) – piše poruku na socket

recv(maxsize) – čita sa socketa poruku maximalne veličine maxsize bytova,

close() – zatvara socket

Page 14: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer jednostavne komunikacije poslužitelj

kreira socket na nekom portu

kreira novi socket za komunikaciju s klijentom

čita poruku s socketa

sva slova u poruci mijenja odgovarajućim

velikim slovima

piše poruku na socket

zatvara socket

klijent

kreira novi socket za komunikaciju sa

serverom

učitava poruku sa standardnog ulaza

piše poruku na socket

čita poruku sa socketa

ispisuje poruku na standardni izlaz

zatvara socket

čeka zahtjev klijenta

bind

listen

accept

read

write

close

connect

write

read

close

Page 15: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 1:

Kreirajmo klijent-poslužitelj aplikaciju koja će raditi na sljedeći način:

- poslužiteljski dio aplikacije:

- čeka klijenta

- preuzima poruku od klijenta

- poruku od klijenta pretvara u velika slova te ju ponovo šalje klijentu

- klijentski dio aplikacije:

- spaja se na poslužitelj

- učitava poruku sa standardnog ulaza

- učitanu poruku šalje poslužitelju

- učitava poruku s poslužitelja te ju ispisuje na izlaz

Page 16: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 1 - poslužitelj:

from socket import *

s = socket()

s.bind(('posluzitelj', 10000))

s.listen(5)

print('Čekam klijenta....')

c, t = s.accept()

print('Spojen klijent {}'.format(t))

p = c.recv(1024).decode('utf-8')

print('Klijent kaže {}'.format(p))

p = p.upper()

print('Šaljem klijentu {}'.format(p))

c.send(p.encode('utf-8'))

c.close()

s.close()

Page 17: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 1 - klijent:

from socket import *

s = socket()

print('Spajam se...')

s.connect(('posluzitelj', 10000))

print('Spojio sam se')

poruka = input('Upiši poruku: ')

s.send(poruka.encode('utf-8'))

print(s.recv(1024).decode('utf-8'))

s.close()

Page 18: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 1 - rješenje:

Page 19: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Prenošenje binarnih datoteka putem mreže

open(ime_datoteke, 'rb')

šaljemo cijelu datoteku istovremeno, bez kodiranja – niz

bajtova

kako znamo koliko paketa na klijentu trebamo učitati?

u prvom paketu klijentu pošaljemo vličinu datoteke (V)

čitamo pakete sve dok ne učitamo V bajtova

niz bajtova (B) pretvaramo u sliku naredbom:

PhotoImage(data = base64.encodestring(B))

sliku prikazujemo na crtačem platnu (Canvas):

c.create_image(s, d, image = slika)

Page 20: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 2:

Kreirajmo klijent-poslužitelj aplikaciju koja će raditi na sljedeći način:

poslužitelj:

čeka klijenta ► klijent spojen ► šalje klijentu popis datoteka ► čeka zahtjev za datotekom od klijenta ► zahtjev primljen ► šalje veličinu datoteke ► šalje datoteku

klijent:

spaja se na poslužitelj ► prima listu datoteka i prikazuje je korisniku ► korisnik odabere datoteku ► šalje naziv datoteke poslužitelju ► od poslužitelja preuzima veličinu datoteke ► od poslužitelja preuzima cijelu datoteku ► prikazuje datoteku na ekranu ► ako korisnik odabere sprema datoteku

Page 21: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 2 - poslužitelj:

Page 22: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 2 - klijent:

Page 23: Mrežno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/Mrezno-programiranje.pdf · Mrežno programiranje. O računalnim mrežama dva ili više međusobno

Primjer 2 - rješenje: