27

Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Embed Size (px)

Citation preview

Page 1: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Sveu£ili²te J.J.Strossmayera u Osijeku

Odjel za matematiku

Sveu£ili²ni preddiplomski studij matematike

Mateja Ðumi¢

Hibridna Peer-to-peer arhitektura

Zavr²ni rad

Osijek, 2011.

Page 2: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Sveu£ili²te J.J.Strossmayera u Osijeku

Odjel za matematiku

Sveu£ili²ni preddiplomski studij matematike

Mateja Ðumi¢

Hibridna Peer-to-peer arhitektura

Zavr²ni rad

Mentor:

doc.dr.sc. Domagoj Matijevi¢

Osijek, 2011.

Page 3: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Saºetak

U dana²njem svijetu ra£unala postaju sve zastupljenija. �ovjek ra£unala koristi za posao,komunikaciju s drugima, zabavu. . . Kako bi zadovoljila te potrebe £ovjeka, ra£unala morajubiti me�usobno povezana zbog £ega dolazi do spajanja ra£unala u ra£unalne mreºe. Arhitek-ture ra£unalnih mreºa su razli£ite te se prilikom izgradnje bira ona koja je optimalna u smislupostizanja brzine te stabilnost. Hibridna peer-to-peer arhitektura se javlja kao mje²avinaklijent-server i peer-to-peer arhitekture. U ovakvom obliku arhitekture postoji jedan cen-tralni server koji sluºi za biljeºenje online korisnika i usmjerivanje pojedinih zahtjeva unutarmreºe, a sva ostala ra£unala predstavljaju klijente koji u odre�enom trenutku mogu i samipostati server tijekom nekog odgovora na zahtjev drugog korisnika. S ovim oblikom mreºese £esto susre¢emo kao korisnici ra£unala kroz razne aplikacije koje koristimo. Pomo¢uprogramskog jezika Python mogu¢e je implementirati jednu od takvih aplikacije � chat ap-likaciju.

Klju£ne rije£i

Internet, mreºa, klijent-server, peer-to-peer, hibridni peer-to-peer, aplikacija, chat, Python

Abstract

In today's world computers are becoming more prevalent. Man uses computer for work,communication with other people, having fun... In order to satisfy needs of people, comput-ers have to be connected to one another and it leads to the merger of computers in computernetworks. There are many di�erent architectures of computer networks, so during the con-struction of one the main thing is to choose the one with optimal speed and stability. Hybridpeer-to-peer architecture occurs as a mixture of client-server and peer-to-peer architecture.In this form of architecture there is one central server that is used to record online usersand the routing of individual requests within the network, and all the other computers areclients who at some point may become server in order to give response to the request ofanother user. As computer users we often encounter this type of computer networks troughvarious applications that we use. Using the programming language Python it is possible toimplement one of these applications - chat application.

Key words

Internet, network, client-server, peer-to-peer, hybrid peer-to-peer, applications, chat,Python

1

Page 4: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Sadrºaj

1 Uvod 3

2 Ra£unalne mreºe 4

2.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Komunikacija unutar ra£unalnih mreºa . . . . . . . . . . . . . . . . . . . . . 4

3 Hibridna Peer-to-peer arhitektura 7

4 Peer-to-peer aplikacije 9

4.1 Peer-to-peer aplikacije za ramjenu datoteka . . . . . . . . . . . . . . . . . . . 104.2 Peer-to-peer aplikacije za IM i online chat . . . . . . . . . . . . . . . . . . . 114.3 Peer-to-peer aplikacije za VoIP . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 Chat aplikacija kao hibridna peer-to-peer arhiktetura 13

6 Implementacija vlastite chat aplikacije 15

6.1 Implementacija vlastite chat aplikacije bez gra�£kog su£elja . . . . . . . . . . 156.2 Implementacija vlastite chat aplikacije sa gra�£kim su£eljem . . . . . . . . . 16

7 Zaklju£ak 23

8 Literatura 24

9 Prilog - popis slika 25

2

Page 5: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

1 Uvod

Ra£unala su postala sve bitniji dio ºivota ljudi. Svoju primjenu su na²la u raznim po-dru£jima £ovjekova ºivota. Susre¢emo se s njima na poslu, u ku¢i, u trgovinama. . . Kakoje £ovjek dru²tveno bi¢e te je kao takav u stalnoj komunikaciji s drugima od ra£unala seo£ekuje da mu omogu¢i komunikaciju s drugima. Osim same komunikacije izme�u dva ko-risnika, ponekad je korisniku potrebno ne²to ²to na njegovom ra£unalu nema. To su nekiod razloga stvaranja ra£unalne mreºe. Ra£unalna mreºa omogu¢uje komunikaciju korisnika,ali i dijeljenje resursa ra£unala. Prilikom izgradnje ra£unalne mreºe potrebno je odabratiarhitekturu koju ¢emo koristiti. U ovom radu ¢emo se susresti s jednim od oblika � hibrid-nom peer-to-peer arhitekturom. Osim sa samom arhitekturom, upoznat ¢emo se i sa nekimnjezinim primjenama odnosno aplikacijama koje su implementirane u ovom obliku mreºe.

Ovaj rad je podijeljen u devet dijelova: Uvod, Ra£unalne mreºe, Hibridna peer-to-peerarhitektura, Peer-to-peer aplikacije, Chat aplikacija kao hibridna peer-to-peer arhitektura,Implementacija vlastite chat aplikacije, Zaklju£ak, Literatura, Prilog � popis slika.

U poglavljima Ra£unalne mreºe i Hibridna peer-to-peer arhitektura upoznat ¢emo se,kao ²to i iz samog naslova vidimo, s ra£unalnim mreºama te njihovim oblicima. Naglasakje stavljen na hibridnom obliku peer-to-peer arhitekture. Zatim, u idu¢em poglavlju pobliºe¢emo se susresti s peer-to-peer aplikacijama i onim ²to nam nude te gdje ih sve pronalazimo.

Kroz ovaj rad implementirat ¢emo i jednu chat aplikaciju. Kako bi ta implementacijauspje²no zavr²ila u petom poglavlju promotrit ¢emo chat aplikaciju kao hibridnu peer-to-peer arhitekturu, te u ²estom poglavlju prije¢i na samu implementaciju u programskom jezikuPython. Za gra�£ko su£elje na²e aplikacije koristit ¢emo wx.Python biblioteku. U ovom radupriloºene su i slike pojedinih dijelova, odnosno slike prozora ove aplikacije te vaºniji dijelovisamog programskog koda.

3

Page 6: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

2 Ra£unalne mreºe

2.1 Internet

Internet, £esto zvan i �mreºa nad svim mreºama�, je javno dostupna globalna paketnapodatkovna mreºa koja povezuje ra£unala i ra£unalne mreºe kori²tenjem internet protokola(IP protokola). Internet je pokrenut 1969. godine, od strane Ministarstva obrane SAD-a,pod imenom ARPANET, gdje prva £etiri slova imena ozna£avaju ime sektora ministarstvakoje se bavilo njegovim razvojem � Agencija za napredna istraºivanja (Advanced ResearchProjects Agency), dok net u imenu ozna£ava ra£unalnu mreºu.

U po£etku cilj Interneta bio je omogu¢iti znanstvenicima razli£itih sveu£ili²ta razmjenji-vanje rezultata istraºivanja dobivenih na razli£itim lokacijama, a jedan od vaºnijih zadatakaprilikom stvaranja ARPANET-a je bilo stvoriti mreºu dovoljno sigurnu da izdrºi i nuklearninapad odnosno u slu£aju uni²tenja dijela komunikacijske mreºe, ostatak mreºe je trebaomo¢i nastaviti komunikaciju bez dodatnih problema.

ARPANET se temeljio na komutaciji paketa koju je 1962. godine razvila kompanijaRand Corporation, koja je funkcionirala na sljede¢i na£in � podaci bi se najprije razbili namanje dijelove informacija tako da svaki dio sadrºi adresu, provjeru pogre²ke te korisni£kepodatke. Jedna od prednosti ovakvog slanja je to ²to paketi poslani s vi²e ra£unala mogudijeliti jednu podatkovnu vezu. Bitno je re¢i da nije potrebna zasebna ruta za svako slanjepaketa. U slu£aju neke pogre²ke ili ako jedno od ra£unala prestane funkcionirati, podaci semogu preusmjeriti na druga ra£unala u mreºi s komutacijom paketa.

Grupa protokola na kojoj se temelji i dana²nji Internet razvijena je ve¢ 1974. godinepod imenom TCP/IP protokol (Transmission Control Protocol/Internet Protocol), a £estoje jo² nazivamo i IP grupa protokola. Naziv je dobila prema dva najvaºnija protokola iz teskupine: TCP, te prema samom IP protokolu. TCP/IP protokoli omogu¢uje komunikacijupreko raznih me�usobno povezanih mreºa te su, osim ²to se na njima zasniva Internet, danasnajrasprostranjenija grupa protokola na lokalnim mreºama.

2.2 Komunikacija unutar ra£unalnih mreºa

Jedan od vaºniji na£ina komunikacije izme�u razli£itih ra£unala unutar mreºe je klijent-server komunikacija. Op¢enito, klijent-server arhitektura je bazirana na distribuciji funkcijaizme�u dva tipa nezavisnih i autonomnih procesa: servera (posluºitelja) i klijenta. Klijentje bilo koji proces koji zahtijeva odre�ene usluge od server procesa, dok je server proceskoji osigurava usluge za klijenta. Klijent i server mogu biti smje²teni u istom ra£unalu ili urazli£itim ra£unalima povezanim preko mreºe.

U slu£aju da su klijent i server procesi smje²teni u dva ili vi²e nezavisnih i umreºenihra£unala, server proces moºe osigurati usluge za vi²e klijenata. Pored toga, klijent moºezahtijevati usluge i od vi²e servera iz okruºenja bez obzira na njihove lokacije ili �zi£ke

4

Page 7: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

karakteristike ra£unala na kojima se nalaze server procesi. Mreºa sluºi povezivanju serverai klijenata zajedno osiguravaju¢i medij kroz koji klijenti i serveri komuniciraju.

Mreºa bazirana na klijent-server arhitekturi, se sastoji od vi²e klijenata spojenih na jedan,centralni server. Server u takvoj mreºi je ra£unalo s velikim kapacitetom i brzinom. Nasuprottome mreºa bazirana na peer-to-peer arhitekturi sadrºi dva ili vi²e ra£unala koja me�usobnodijele resurse poput diskova, CD ROM-ova, pisa£a... Dijeljeni resursi su dostupni svakomra£unalu u mreºi tijekom veze izme�u dva od njih. Svako ra£unalo se pona²a i kao server ikao klijent ²to zna£i da su sva ra£unala unutar mreºe ravnopravna odakle i dolazi sam pojampeer-to-peer. Prednost peer-to-peer arhitekture je jednostavnija kontrola zahtijeva koja netraºi dodatnu regulaciju me�u sudionicima i ne odga�a prijenose preusmjeravanjem prekoposluºitelja (server). Me�utim ispreplitanje veza moºe biti ve¢e nego prilikom upotrebepreusmjeravanja preko £vorova posluºitelja.

Softwerska aplikacija instalirana na samo jednom ra£unalu unutar peer-to-peer mreºemoºe biti kori²tena na svim ra£unalima unutar mreºe. U usporedbi sa klijent-server mreºom,peer-to-peer je jeftinija jer software potreban za njezino postavljenje je ve¢ po default in-staliran na ve¢ini desktop operacijskih sustava. S druge strane, klijent-server model mreºe jepogodan za bilo koju veli£inu i �zi£ki oblik LAN mreºe i ne usporava funkcioniranje mreºeprilikom zahtjevnijih operacija. Jo² jedan od nedostataka peer-to-peer mreºe je smanjenasigurnost, jer je sigurnost mreºe regulirana pomo¢u pojedinog ra£unala, a nije kontroliranai nadgledana kao cjelina pomo¢u server-ra£unala.

Najve¢a peer-to-peer mreºa, Gnutella, je prva decentralizirana mreºa tog oblika. Nastalaje u oºujku 2000.-te godine. U lipnju 2005. Gnutella je brojala 1.81 milijuna ra£unala, a do2006. taj broj je ve¢ prerastao 3 milijuna. U 2007. godini, Gnutella je bila najpopularnijamreºa za dijeljenje datoteka na Internetu, te je udio trºi²nog dijeljenja ove mreºe bio ve¢iod 40 posto. Prvi gnutella klijent razvili su Justin Frankel i Tom Papper po£etkom 2000-tegodine, te je gnutella mreºa kao potpuno distribuirana bila alternativna polucentraliziranimsustavima poput FastTrack (KaZaA) i Napster.

Po£etkom 2001. godine se javlja mogu¢nost dodjeljivanja razina korisnicima odnosnoumjesto da se svi korisnici tretiraju kao i klijenti i serveri, neki su tretirani kao ultrapeers1 tekao takvi su preusmjeravali zahtjeve korisnika i odgovore na zahtjeve korisnicima spojenimna njih. Danas rije£ gnutella ne ozna£ava nijedan projekt ili dio softwera, ve¢ ozna£avaotvoreni protokol kori²ten od strane razli£itih klijenata.

Kako bi si olak²ali shva¢anje rada Gnutelle, moºemo zamisliti veliki krug s korisnicima(nazivamo ih jo² i £vorovi) koji svaki posjeduje software gnutella klijenta. Prilikom inicijalnogpokretanja sotfware klijenta se �podiºe� i pronalazi barem jedan £vor. Za pronalaºenje £voramreºe koriste se razli£ite metode poput liste adresa postoje¢ih £vorova koja dolaze zajednosa softwerom, kori²tenje aºuriranih web podmemorija poznatih £vorova, podmemorije UDPservera, £ak i IRC iako rijetko.

1svojevrsni nad£vor, ima ulogu usmjeriva£a

5

Page 8: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Kad se klijent spoji u mreºu traºi listu adresa aktivnih £vorova, te se spaja na £vorove£ije adrese dobiva, dok ne postigne maksimalnu kvotu £vorova s kojima se moºe povezati. Uslu£aju odre�enog upita korisnik ²alje zahtjeve spojenim £vorovima, te oni u slu£aju potrebe²alju £vorovima s kojim su oni spojeni i tako sve dok ne do�e do odgovora na upit ili sepostigne maksimalni broj hopova2. U kasnijim varijantama dolazi do oblikovanja mreºe uobliku stabla gdje se £vorovi veºu na ultrapeers-e koji su me�usobno povezani.

Prednost ovako organizirane mreºe je sigurnost od ru²enja jer cijela mreºa ne �leºi� najednom centralnom serveru, pa se ru²enjem odre�enog £vora ne ugroºava ostatak mreºe.Osim toga korisnici su ti koji odlu£uju koji sadrºaji ¢e biti dostupni koji ne. Neki odnedostataka su nestabilnost mreºe jer se £vorovi stalno mogu spajati i odspajati, te to ²topotraga za ne£im unutar mreºe eksopnencijalno raste s pove¢anjem broja korisnika.

2prede�nirano u verziji koja se koristi, te jedan hop predstavlja jedan upit korisnik � svom £voru.

6

Page 9: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

3 Hibridna Peer-to-peer arhitektura

Peer-to-peer mreºe poznate i pod skra¢enicom P2P, popularan su na£in razmjene podatakai informacija me�u korisnicima. Promet ostvaren peer-to-peer mreºama procjenjuje se navi²e od 1.3 petabyte podataka te je u posljednjih pet godina prema²io promet ostvarenpregledavanjem web stranica i drugim aktivnostima.

Pod nazivom peer-to-peer krije se bilo koja distribuirana mreºna arhitektura koja se sas-toji od korisnika koji dio svojih resursa, poput procesora, memorije ili mreºnog prometa,pruºaju na u potrebu drugim korisnicima iste mreºe i to bez upotrebe centralnog kordini-raju¢eg elementa kao npr. servera. Kod P2P mreºe korisnici imaju dvostruku ulogu, oni suistovremeno pruºatelji sadrºaja ali i korisnici, tj. svako ra£unalo moºe istovremeno primitii davati resurse drugim sudionicima odgovaraju¢e mreºe. Zbog ovakvog na£ina rada, jersvaki sudionik mreºe mora poznavati mreºnu adresu drugog sudionika kako bi mu mogaopristupati, dolazi do zna£ajnog usporenja rada mreºnog sustava ukoliko se radi o velikombroju sudionika. Peer-to-peer sustavi mogu biti podjeljeni u dvije skupine:

• �iste P2P mreºe, gdje £vorovi dijele podatke i resurse bez nekog sredi²njeg koordinatora

• Hibridne P2P mreºe gdje su odre�ene operacije centralizirane poput adresa odre�enog£vora, indeksiranja odre�enih datoteka korisnika.

U £istim peer-to-peer sustavima cijela mreºa se sastoji od ravnopravnih £vorova tj. nepostoji neki preferirani £vor s posebnim infrastrukturnom ulogom. Primjeri ovakve mreºesu ve¢ spominjana Gnutella i Freenet. Hibridne mreºe, za razliku od £istih P2P, dopu²tajupostojanje tzv. super£vora3 koji su nadre�eni ostalima te kao takvi koordiniraju njihovme�usobni rad. Primjer hibridne mreºe je Gnutella 2, moderna implementacija Gnutelle,te Kazaa. Kako ¢emo u nastavku ovog rada govoriti o aplikaciji temeljenoj na hibridnojarhitekturi, zadrºat ¢emo se na ovom obliku mreºe.

Hibridne mreºe moºemo promatrati kao mje²avinu klijent-server i £iste peer-to-peer arhik-teture. Hibridni pristup omogu¢uje da se odre�eni £vorovi pona²aju kao serveri, a drugi kaoklijenti odnosno omogu¢uje postojanje centralnog servera.Centralni server omogu¢uje regis-traciju klijenata, prave¢i popis adresa svih aktivnih klijenata, zatim popis datoteka koje jekorisnik spreman dijeliti zajedno s putanjama do te datoteke na klijentovom lokalnom disku,te popis ra£unalnih resursa koji ºeli dijeliti. Kod ovakvog pristupa klijent je, na primjer ustanju skinuti datoteke direktno od drugih klijenata pomo¢u informacija dostupnih prekocentralnog servera.

3supernodes

7

Page 10: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Shematski prikaz ovog oblika mreºa bi izgledao ovako:

Slika 1. Hibridna peer-to-peer mreºa

Razlika izme�u £iste i hibridne peer-to-peer mreºe je u postojanju centralnog servera, no£esto prilikom govora o P2P mreºi se ni ne nagla²ava radi li se o £istoj ili hibridnoj P2Pmreºi.

8

Page 11: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

4 Peer-to-peer aplikacije

Kad govorimo o P2P mreºi podrazumijevamo oba oblika te mreºe odnosno i £istu i hib-ridnu arhitekturu. Podaci o samoj zastupljenosti ovakvog oblika mreºe i samim aplikacijamadostupni su samo kao zbroj oba oblika, tj. rijetko moºemo prona¢i odvojene podatke o£istoj te odvojeno o hibridnoj P2P mreºi. Kako se ta dva oblika razlikuju u postojanjutj. nepostojanju centralnog servera, ²to je ve¢ spominjano u pro²lom poglavlju, za prikazkori²tenosti hibridnog oblika te pone²to o samim aplikacijama moºemo promatrati op¢enitoP2P aplikacije sa sigurnosti da na kraju ne¢emo dobiti krivu sliku o hibridnom obliku ovemreºe.

P2P komunikacija predstavlja najra²ireniji oblik komunikacije na internetu s obzirom narazmjenu koli£ine podataka. Udio P2P prometa u ukupnom prometu varira ovisno o regijiod 49 posto na Bliskom Istoku do 83 posto u Isto£noj Europi (podaci iz 2007.godine).

Slika 2. Distribucija podataka po tipu 2007. godine u Njema£koj(preuzeto iz [7] slika 1.3.)

9

Page 12: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Slika 3. Distribucija P2P protokola 2007. godine u Njema£koj(preuzeto iz [7] slika 1.4.)

Podjela P2P aplikacija po namjeni bi izgledala ovako:

• Razmjena datoteka (�le-shareing applications)

• IM i online chat

• VoIP

• Distribucija i publikacije multimedije

• Distribucija i publikacija softvere

• Streaming multimedijskog sadrºaja

• Kolaboracija i grupe za diskusiju

Malo detaljnije ¢emo pro¢i kroz prve tri kategorije � spomenuti njihove najvaºnije pred-stavnike i pobliºe odrediti njihovu namjenu.

4.1 Peer-to-peer aplikacije za ramjenu datoteka

P2P aplikacije za razmjenu datoteka kategoriziramo po protokolu koji koriste:

• BitTorrent: Vuze (Azureus), Bitcomet, rTorrent

10

Page 13: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

• Gnutella: Bearshare, Limewire, Frostwire, Shareaza

• Napster: Napster

• eDonkey: aMule. eMule, Morpheus, Shareazu

BitTorrent protokolom se prenosi 35 posto sveg prometa na internetu. Iznimna e�kasnostovog protokola leºi u tome ²to svaka stranka koja sudjeluje u downloadu sudjeluje i u uploadupodataka. Ovaj protokol dizajnirao je Bram Cohen 2001.godine, a danas se koli£ina prometakoja kruºi internetom putem BitTorrent protokola procijenjuje na vi²e od 1.1 petabyta.

4.2 Peer-to-peer aplikacije za IM i online chat

Dvije danas najpopularnije P2P aplikacije za IM (instant messaging) i online chat su:

• Windows live Messenger

• Yahoo! Messenger

Osim te dvije aplikacije bitno je spomenuti i ICQ koji se kao jedan od prvih IM klijenataikada pojavljuje 1996.godine na trºi²tu. Windows Messenger je pu²ten u rad tri godine poslijeodnosno 1999. godine po imenom MSN Messenger, a dana²nje ime dobiva 2005.godine.Osimstandardnih funkcija za jednu IM aplikaciju Windows live Messenger pruºa i usluge djeljenjafoldera me�u korisnicima, Windows live Call (PC-to-phone usluga). . .

ICQ kao jedan od najstarijih IM klijenata, danas ima preko 31 milijun korisnika diljemsvijeta, a neke usluge kojima privla£i korisnike su i multiplayer igre, prijenos datoteka, SMS-to-Mobile phone usluge te audio i video komunikacija.

4.3 Peer-to-peer aplikacije za VoIP

VoIP (Voice over Internet Protocol) predstavlja skup komunikacijskih tehnologija za pri-jenos zvu£ne komunikacije preko IP mreºe. VoIP postaje popularan usporedno s razvojem²iroko pojasnog pristupa Internetu, jer u ve¢ini slu£ajeva omogu¢ava besplatno telefoniranjes ra£unala na ra£unalo te jeftinije telefoniranje s ra£unala na mobitel i �ksnu liniju. Skype,ICQ i Windows live Messenger su neke od (ve¢ spomenutih) P2P aplikacija koje podrºavajuVoIP. Skype je glavni i najpopularniji predstavnik aplikacija za VoIP. Osim �telefoniranja�preko Interneta, Skype korisnika nudi i usluge kao ²to su IM, prijenos datoteka, video tele-foniju i video konferencije. Tvorci Skypea su Nikolas Zennstr®m, Janus Friis i tim programeraiz Tallinna (Estonija). Danas ova aplikacija ima preko 310 milijuna korisnika, te kao i napo£etku svog postojanja biljeºi nagli rast u popularnosti. Dostupan je u vezijama za Linux,Mac OSX, Microsoft Windows sustave, £ak i za Sonyev PSP.

11

Page 14: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Osim kategorizacije po namjeni bitno je spomenuti i podru£ja u kojim se P2P aplikacijejavljaju. Neka od tih podru£ja su bioinformatika, prosvjeta, vojska i poduzetni²tvo. Svojuupotrebu P2P mreºe u bioinformatici su prona²le u pokretanju velikih programa s ogromnimskupovima podataka, npr. u istraºivanju lije£enja karcinoma. U prosvjeti se P2P mreºekoriste u akademskim i istraºiva£kim zajednicama, u vojsci kao dio moderne mreºe ratnestrategije, dok je upotreba u poduzetni²tvu jo² u po£etnom stanju zbog mno²tva sigurnosnihproblema.

12

Page 15: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

5 Chat aplikacija kao hibridna peer-to-peer arhiktetura

Nakon ²to smo pro²li kroz aplikacije koje koriste P2P arhikteturu usredo£iti ¢emo naChat aplikaciju kao hibridnu Peer-to-peer arhikteturu � objasniti ¢emo njezinu strukturu tena£in funkcioniranja. Chat aplikacija bi trebala imati centralni server na koji bi se korisniciprijavljivali tj. koji bi sadrºavao bazu online korisnika, te bi online korisnici mogli me�u-sobno komunicirati preko �instant� poruka. To je jedan o£it primjer hibridne peer-to-peerarhitekture ²to ¢emo pokazati promatraju¢i dio po dio ovog sustava.

Spomenuti sustav se sastoji od klijenata koji se prijavljuju na centralni server. Pri-likom prijave server sprema u svoju bazu bitne podatke o korisniku kao ²to su nadimakkoji ¢e koristiti u ovoj chat aplikaciji, adresa i sli£no. Nakon prijave korisniku je dostupnalista trenutno prijavljenih korisnika s koje moºe birat osobu s kojom ºeli razgovarati. Kadaodabere osobu za razgovor uspostavlja se komunikacija izme�u nijh dvoje i u tom trenutkujedan od tih dva klijenta koji stupaju u komunikaciju mora preuzeti ulogu servera, u £emuse i o£ituje hibridna peer-to-peer arhiktetura. Iz ovog vidimo da centralni server ima samoulogu pra¢enja online korisnika, te da nema veze sa samom komunikacijom izme�u korisnikanakon uspostavljanja veze.

Slikovito ovaj proces bi izgledao ovako:

Slika 4. Uspostava veze klijent - centralni server i zahtjev za listom

13

Page 16: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Slika 5. Odabir osobe s liste i uspostava razgovora

Sama odluka o tom koji od klijenata ¢e postati server u komunikaciji ovisi o samoj im-plementaciji aplikacije te programeru koji radi na njoj, tj. nije uvjetovana niti arhitekturomniti bilo kojim procesom koji se u tom trenutku moºda odvija.

Ovakav sustav, tj. arhitektura omogu¢uje rastere¢enost servera, te veliki broj koris-nika ne utje£e bitno na brzinu kojom ¢e se odvijati razgovor izme�u korisnik. Osim toganakon uspostave razgovora izme�u korisnika ni pad tzv. centralnog servera ne bi uzrokovaoprekid tog razgovora, ve¢ sam prestanak komunikacije dolazi u trenutku kada jedan od ko-risnika zatraºi prekid ili se odjavi s mreºe. Razgovor me�u korisnicima, tako�er, nije jednaod programskih prezahtjevnih implementacija, jer ono ²to bi korisnik trebao mo¢i je primatii slati poruke.

14

Page 17: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

6 Implementacija vlastite chat aplikacije

U prethodnom poglavlju razmatrali smo chat aplikaciju kao hibridnu peer-to-peer arhitek-turu, poja²njavaju¢i po dijelovima njezinu strukturu. Osim toga opisali smo kako bi op¢en-ito jedna chat aplikacija trebala izgledati. U ovom poglavlju implementirati ¢emo jednukonkretnu chat aplikaciju i to u Python programskom jeziku, te napraviti gra�£ko su£eljekoriste¢i wx.Python biblioteku. Prilikom stvaranja socketa potrebnih za samu komunikacijukoristit ¢emo se TCP protokolima koji ¢e nam garantirati da se komunikacija odvija pravilnotj. da poslane poruke stiºu korisniku s kojim se odvija komunikacija.

6.1 Implementacija vlastite chat aplikacije bez gra�£kog su£elja

Chat aplikacija koju ¢emo implementirati trebala bi omogu¢iti da svaki klijent moºevidjeti listu preostalih online korisnika i izabrati jednog od njih za razgovor koji bi biovidljiv samo njima.

Za samu implementaciju potrebni su nam server i klijent. Server ¢e sluºiti za evidenti-ranje online korisnika tj. pratiti prijave i odjave te dati potrebne informacije za uspostavurazgovora, a software korisnika ¢e omogu¢avati prijavu na server, pregled liste online koris-nika koja ¢e traºiti od servera te razgovor s nekim od korisnika koji su u tom trenutku namreºi. Na samom po£etku bi server program trebalo postaviti na neko ra£unalo te ga spojiti snekim mreºnim su£eljem (hostom) i otvoriti port na kojem ¢e £ekati prijavu korisnika.Adresaservera, host i port, treba biti unaprijed poznata klijent programu. Socket koji £eka da se nanjega spoji klijent ¢emo de�nirati kao TCP socket odnosno ako promatrani socket nazovemos, tada socket de�niramo s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

Ovaj socket je potrebno de�nirati kao slu²aju¢i tj. listening kako bi £ekao prijavu koris-nika. Server u while petlji £eka spajanje korisnika te njihov nick koji zatim stavlja u listukoju svaki korisnik moºe zatraºiti. Nakon prijave otvara posebni thread koji ¢e odgovaratina zahtjeve tog korisnika. U ovoj aplikaciji taj thread bi trebao odgovarati na samo trizahtjeva a to su list, connect i sign out. Kada od korisnika dobije poruku list servertreba poslati listu online korisnika koju ima u svojoj bazi i koja se aºurira prilikom prijava,odnosno odjava korisnika, connect naredba dolazi zajedno s nadimkom korisnika s kojimse ºeli uspostaviti razgovor, te server tada ²alje adrese korisniku s tim nadimkom i port nakojem £eka za razgovor, te sign out sluºi za odjavu s aplikacije i brisanje iz liste onlinekorisnika.

Za razliku od servera implementacija korisnik programa je puno zahtjevnija te kao takva¢e sadrºavati vi²e funkcija ali i puno ve¢i programski kod. Osim toga poºeljno je i gra�£kosu£elje za korisnika kako bi korisnik mogao lako koristiti samu aplikaciju ne poznavaju¢i pro-gramski jezik u kojem je aplikacija pravljena, te da bi se unaprijed isprogramiranim gra�£kimgumbima (buttonima) sprije£ile pogre²ke prilikom prijave i samog razgovora izme�u koris-nika.

15

Page 18: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

U poglavlju 4. je bilo re£eno da koji korisnik ¢e postati server u razgovoru ovisi oimplementaciji, stoga, iako bez nekog velikog razloga u ovoj aplikaciji ulogu servera preuzet¢e korisnik s kojim se ºeli uspostaviti razgovor. Naime, kada korisnik ºeli uspostaviti razgovors drugim uz zahtjev connect poslat ¢e i sam nadimak osobe s kojom ºeli razgovarati, te ¢eserver, kao ²to je ve¢ re£eno poslati adresu te osobe i port na kojem £eka za razgovor, nakon£ega ¢e se korisnik spojiti na njegov port, i na taj na£in osoba s kojom ºelimo ostvaritirazgovor postaje server.

Samim time ²to se korisnik ujedno mora i spajati na server ali i £ekati za razgovor moraimati otvorena najmanje dva socketa � socket koji ¢e odrºavati vezu sa serverom i socketkoji ¢e £ekati za uspostavu razgovora. Potreba postojanja barem, dva socketa sa razli£itimulogama govori o velikoj sloºenosti programskog koda klijenta. Zbog te sloºenosti prvo ¢emopro¢i kroz ono ²to bi ovaj kod trebao raditi, pa tek onda prije¢i na implementaciju s gra�£kimsu£eljem.

Na samom po£etku potrebno je de�nirati dva socketa (TCP socketa) jedan koji ¢emospojiti sa serverom i poslati mu svoj nick i koji ¢e s njim odrºavati komunikaciju te ganazovimo s_serrver. Nakon toga otvaramo i drugi socket na nekom proizvoljnom (random)portu koji £eka drugog korisnika za razgovor pod imenom s_ceka. Prilikom pokretanja togsocketa za £ekanje potrebno je otvoriti paralelni thread kako bi ostatak programa mogaonastaviti s radom. Preko socketa s_server program ²alje centralnom serveru port na kojem£eka za razgovor te taj port centralni server pamti uz nadimak te ga ²alje na zahtjev korisnikaza razgovor s tim klijentom. Nakon spajanja sa serverom korisnik mora biti u mogu¢nostizatraºiti listu korisnika koji su online i to tako�er £ini preko socketa s_server to£nije naredbes_server.send(list) te samu listu prima preko s_server.recv( ).

Glavni dio programa korisnika je uspostava razgovora i sam razgovor, a to se odvija nasljede¢i na£in:

Korisnik ²alje zahtjev serveru za dobivanje porta na kojem £eka osoba s kojom ºeli us-postaviti razgovor pomo¢u stringa connect + nadimak. Nakon ²to dobije port otvara novisocket nazovimo ga s_razgovor i novi thread u kojem ¢e se odvijati razgovor. Novootvorenimsocketom spaja se na drugog korisnika tj. njegov s_ceka socket koji tako�er otvara novithread za razgovor te se na taj na£in uspostavio razgovor. Nakon uspostave razgovora svakiod korisnika mora imati mogu¢nost slanja, primanja i prekidanja uspostavljena razgovora.Samo slanje i primanje poruka se odvija pomo¢u naredbi send i recv izme�u ta dva sock-eta koji su uspostavili vezu, a prekid naredbom tj. slanjem stringa disconnect kojim sezatvaraju threadovi otvoreni za taj razgovor te se prekida veza izme�u socketa.

6.2 Implementacija vlastite chat aplikacije sa gra�£kim su£eljem

Za stvaranje gra�£ke okoline koristiti ¢emo wx.Python biblioteku. Sam programskikod klijenta smo pro²li u prethodnom poglavlju a ovdje ¢emo ga pratiti pomo¢u gra�£kog

16

Page 19: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

su£elja tj. pratit ¢emo kako se prozor otvaraju i ²to odre�eni gumbovi4 nude, odnosno ²to senjima pokre¢e od prethodno spomenutih i obja²njenih opcija.

Prije nego ²to prije�emo na sam program napomenimo da se pojedini prozori de�nirajuu zasebnoj klasi te se podiºu pomo¢u pozivanja objekta wx.app( ), te prikazuje naredbomself.show() unutar same klase ili izvan pomo¢u de�niranja objekta te pozivanjem funkcijeime_objekta.show().

Kao ²to je ve¢ spomenuto, prvo je potrebno program centralnog servera smjestiti naodre�enu lokaciju i pokrenuti ga. Zatim pokre¢emo program klijenta, i prvo ²to nam sepojavljuje prozor koji traºi da unesemo nick pod kojim ¢emo biti prikazani u ovoj aplikaciji.

Slika 6. Prozor prijave u chat aplikaciju

Unutar te klase Nick, kojom se podiºe po£etni prozor, doga�a se i spajanje unutar kojegse podiºe serverski dio ovog klijenta, odnosno otvara se novi socket koji ¢e biti slu²aju¢i i£ekati da se na njega spoji drugi korisnik.

Slika 7. Kôd spajanja

Slika 8. Programski kôd pokretanja socketa koji £eka4buttons

17

Page 20: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Slika 9. Programski kôd primanja poruka kada klijent ima ulogu servera

Osim prostora za unos nicka na po£etnom prozoru imamo jo² dva gumba � Ok i Close.Pritiskom gumba Close napu²tamo aplikaciju, a gumba Ok smo zavr²ili samu prijavu.Nakon ²to pristisnemo Ok otvoreni prozor se zatvara te se pojavljuje nova dva.

Prvo ¢emo promotriti prozor Razgovor, koji u samom po£etku nije toliko bitan, te svojsmisao dobiva nakon ²to se uspostavi razgovor izme�u korisnika. Prozor je podijeljen u dvadijela � gornji dio koji prikazuje tijek razgovora izme�u korisnika, te donji dio koji namomogu¢uje uno²enje poruke koju ºelimo poslati. Ispod tog donjeg dijela nalaze se i dvagumba Po²alji, kojim ²aljemo gore unesenu poruku, te Zavr²i kojim prekidamo razgovor.Ovom prozoru ¢emo se vratiti nakon ²to do�emo do same uspostave razgovora

Slika 10. Prozor razgovora

18

Page 21: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Drugi prozor nam nudi mogu¢nost odjave iz aplikacije i prikaz liste online korisnika.Ako se odlu£imo za odjavu, na² program klijenta serveru ²alje poruku o na²oj odluci te nasserver bri²e s liste, nakon £ega se zatvaraju svi aktivni prozori. Odabir liste nam otvaranovi prozor s popisom trenutno prijavljenih korisnika. Prozor popisa tako�er nudi dvijeopcije, osvjeºavanje trenutne liste korisnika odnosno Refresh te opciju Spoji koja nas vodiu razgovor.

Slika 11. Prozor koji nudi mogu¢nost zahtjeva liste i odjave

Slika 12. Prozor popisa online korisnika

Ako se odlu£imo za spajanje dolazimo do novog prozora, koji nam nudi listu osobas kojima moºemo uspostaviti razgovor. Mi²em pritisnemo na nick osobe s kojom ºelimouspostaviti razgovor, te pritiskom na Ok uspostavljamo razgovor.

19

Page 22: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Slika 13. Prozor u kojem odabiremo osobu za razgovor

Sada se moºemo ponovno vratiti na prozor s kojim smo se susreli na po£etku � prozorRazgovor. U trenutku uspostave razgovora, ovaj prozor postaje aktivan, tj omogu¢ujesam prikaz poruka koje si korisnici me�usobno ²alju. Na slijede¢oj slici moºemo promotritipo£etak jednog razgovora:

Slika 14. Razgovor izme�u dva korisnika

20

Page 23: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Osim tih prozora koji su tu za pomo¢ korisniku te lak²e kori²tenje ove aplikacije, upozadini je potrebno promotriti kako se sve to odvija, odnosno kako dolazi naprimjer dosame uspostave razgovora ili prikaza liste...

Ve¢ je spomenuto da u samoj klasi Nick dolazi do spajanja, tako se i u ostalim klasamapomo¢u kojih se diºe odre�eni prozor odvijaju druge korisniku pozdainske stvari, ali samimprogramerima bitne stvari, jer upravo one omogu¢uju funkcioniranje aplikacije.

Pro¢i ¢emo i kroz te stvari redom. U prozoru ponude opcija korisniku, promotrit ¢emo²to se doga�a pritiskom na gumb lista. Ono ²to se doga�a pritiskom na taj gumb je danomsljede¢im programskim kodom:

Slika 15. Programski kôd koji uzrokuje pojavljivanje prozora s popisom online korisnika

Moºemo primjetiti da nakon pritiska na gumb Lista korisnik serveru ²alje zahtjev zalistom, te £eka od njega traºene podatke. Server nakon ²to primi zahtjev, u svojoj bazina�e listu te je ²alje, nakon ²to po²alje nadimak posljednjeg korisnika ²alje rije£ gotovo tetako program korisnika zna da je slanje gotovo. Nakon toga se poziva klasa Lista, kojom seotvara prozor sa samom listom.

U tom prozoru moºemo odabrati opciju Spoji koja nam nudi listu mogu¢ih osoba zarazgovor. Nakon ²to odaberemo osobu dolazi do samog spajanja korisnika, te uspostaverazgovora funkcijom Spajanje_za_chat()

21

Page 24: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

Slika 16. Programski kôd spajanja za razgovor

Slika 17. Programski kôd threada pokrenutog tijekom spajanja za chat

Slika 18. Programski kôd koji omogu¢uje primanje poruka

Sam razgovor dobro je spremiti u datoteku na korisnikovom ra£unalu, kako bi i nakon za-vr²etka razgovora mogao pogledati ono ²to su si me�usobno slali, a ²to je ve¢ implementiranodanim programskim kôdom.

Ovim smo pobliºe pro²li kroz sam kôd bitnijih fukcija u programu korisnika te zavr²ilisamu implementaciju chat aplikacije.

22

Page 25: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

7 Zaklju£ak

Razvojem ra£unala i njihovom upotrebom u razli£ite svrhe javila se i potreba za razli£itimoblicima njihovog povezivanja. Jedan od tih oblika je i hibridna peer-to-peer arhitekturakoja se javlja kao spoj klijent-server i peer-to-peer arhitekture.

Svoju primjenu ovaj oblik mreºe je prona²ao u razli£itim podru£jima, a u ovom radu smose najvi²e zadrºali na samim aplikacijama izgra�nim na ovom obliku mreºe. Ove aplikacijesu uglavnom svima dobro poznate, neke koristimo i svakodnevno, no ne razmi²ljamo na kojina£in one funkcioniraju.

Ovim radom sam poku²ala pribliºiti neke dijelove aplikacija baziranih na peer-to-peerarhitekturi, te kroz prakti£ni rad pokazati da i sami moºemo napraviti neke od njih.

Smatram da ovaj oblik mreºe nudi prostor za razvoj mnogih aplikacija, jer ne postojanjejednog servera £ijim ru£enjem se ru²i i cijela mreºa je koristan kao preventivna za²tita odmogu¢ih ru²enja mreºa. Kao i svaki drugi oblik ima svoje nedostatke, ali ukoliko smo ihsvjesni moºemo ih minimizirati. Upravo iz tih razloga vjerujem da ¢e ovaj oblik mreºe i daljeostati prili£no zastupljen u brojnim aplikacijama.

Zahvalu upu¢ujem mentoru doc.dr.sc.Domagoju Matijevi¢u zbog sve pomo¢i prilikomstvaranja ovog zavr²nog rada, a posebno u izradi prakti£nog dijela.

23

Page 26: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

8 Literatura

[1] B. Rhodes, J.Goerzen, Foundations of Python Network Programming: The comprehen-sive guide to building network applications with Python, second edition, Apress, SAD,2010.

[2] Gnutella. U Wikipediji. Dostupno na:http://en.wikipedia.org/wiki/Gnutella

[3] Mutual Anonymity Protocols for Hybrid Peer-to-Peer Systemshttp://pages.cs.wisc.edu/ zhichen/xiao-336.pdf

[4] M. Veinovi¢, A. Jevremovi¢: Uvod u ra£unarske mreºe, Univerzitet Singudunum,Beograd, Srbija 2007.

[5] N. Rappin, R. Dunn: wx.Python in Action, Manning, Greenwich, UK, 2006.

[6] Peer-to-peer. U Wikipediji. Dostupno na:http://en.wikipedia.org/wiki/Peer-to-peer

[7] Peer-to-peer aplikacijehttp://www.fer.unizg.hr/_download/repository/p2p_aplikacije.pdf

[8] Peer-to-peer mreºehttp://sigurnost.lss.hr/documents/LinkedDocuments/NCERT-PUBDOC-2009-11-282.pdf

[9] The peer-to-peer architecturehttp://media.wiley.com/product_data/excerpt/98/04714636/0471463698.pdf

24

Page 27: Sveu£ili²te J.J.Strossmayera u Osijeku Odjel za …mdjumic/uploads/diplomski/ĐUM03.pdfi klijenata zajedno osiguraavju¢i medij kroz koji klijenti i serveri komuniciraju. Mreºa

9 Prilog - popis slika

Slika 1. Hibridna peer-to-peer mreºa........................................................................................8Slika 2. Distribucija podataka po tipu 2007. godine u Njema£koj.............................................9Slika 3. Distribucija P2P protokola 2007. godine u Njema£koj................................................10Slika 4. Uspostava veze klijent - centralni server i zahtjev za listom.........................................13Slika 5. Odabir osobe s liste i uspostava razgovora...................................................................14Slika 6. Prozor prijave u chat aplikaciju...................................................................................17Slika 7. Kôd spajanja..............................................................................................................17Slika 8. Programski kôd pokretanja socketa koji £eka..............................................................17Slika 9. Programski kôd primanja poruka kada klijent ima ulogu server...................................18Slika 10. Prozor razgovora.......................................................................................................18Slika 11. Prozor koji nudi mogu¢nost zahtjeva liste i odjave.....................................................19Slika 12. Prozor popisa online korisnika...................................................................................19Slika 13. Prozor u kojem odabiremo osobu za razgovor.............................................................20Slika 14. Razgovor izme�u dva korisnika..................................................................................20Slika 15. Programski kôd koji uzrokuje pojavljivanje prozora s popisom online korisnika..........21Slika 16. Programski kôd spajanja za razgovor.........................................................................22Slika 17. Programski kôd threada pokrenutog tijekom spajanja za chat....................................22Slika 18. Programski kôd koji omogu¢uje primanje poruka.......................................................22

25