You are on page 1of 11

UNIVERSITETI I PRISHTINS

Fakulteti i Shkencave Matematike-Natyrore


Departamenti i Matematiks
Programi i Shkencs Kompjuterike

Chat me file transfer


Lnda: Programimi i Distribuuar

Punuar nga:
Drilon Avdiu
Leutrim Musliu
Shqiprim Bunjaku
1

Prmbajtja

1. Prshkrimi i projektit ................................................................... 3-6


a. Hyrje ......................................................................................3
b. JavaGroups .........................................................................3-4
c. VideoConference ................................................................4-5
d. Chat me File Trasfer ...............................................................6
2. far sht punuar? .....................................................................7-8
3. Si funksionon programi? ...............................................................8-9
4. Cfar probleme jan hasur deri n kohn e prezantimit? .............10
5. Referencat ......................................................................................11

1. Prshkrim i shkurtr i projektit


a. Hyrje
Projekti Chat me File Transfer konsiston n zgjerimin e projektit
VideoConference te ndrtuar nga studenti Hooi Ming Ng n
Universitetin e Cornellit, i cili prdor API-n JavaGroups e ndrtuar
nga Bela Ban, profesor n Universitetin e Cornellit. N vijim do t
prshkruajm shkurtimisht se si funksionon JavaGroups, dhe se si
sht implementuar VideoConference.

b. JavaGroups [1]
API-ja e JavaGroups sht e thjesht (e ngjashme me UDP-n te
socketat) gjithmon e njejt pa marr parasysh se n cfar
rrethanash prdoret. Pr t qen n gjendje t
drgohen/pranohen mesazhe, nj channel duhet t krijohet,
protocol stack-u specifikohet me nj string. N vijim jepim nj
shembull t krijimit t nj kanali q drgon/pranon mesazhe:
String props="UDP:PING:FD:STABLE:NAKACK:UNICAST:" +
"FRAG:FLUSH:GMS:VIE_ENFORCER:STATE_TRA
NSFER:QUEUE";
Message send_msg, recv_msg;
Channel channel=new JChannel(props);
channel.Connect("MyGroup");
send_msg=ne Message(null, null, "Hello orld");
channel.Send(send_msg);
recv_msg=(Message)channel.Receive(0);
System.out.println("Received " + recv_msg);
channel.Disconnect();
channel.Close();

Pr t hyr n nj grup, thirret metoda Connect(). Kjo metod


kthen mesazh ather kur nj antar suksesshm qaset grupit t

emruar "MyGroup", ose kur krijohet nj grup i ri (nse antari


sht i pari n grup).
Mesazhet drgohen prmes Send() metods. Nj mesazh
prmban adresn e pranuesit ('null'= t gjith antaret e grupit),
adresn e drguesit ('null', q pastaj mbushet nga protocol stack-u
para se mesazhi t drgohet) dhe nj byte buffer. Byte bufferi
mund t jet String, apo ckado tjetr. Ktu prdorim serializimin.
Prderisa mesazhi drgohet tek t gjith antart, edhe drguesi
do e pranoj at. Kjo bhet duke prdorur Receive() metodn.
N fund, antari kyet nga channel dhe e mbyll at. Kjo rezulton
me nj mesazh njoftues pr t gjith antart tjer.

c. VideoConference [1]
Prshkrim
JavaGroupsVC sht nj open source program i dizajnuar pr t
ofruar nj multi-platform pr video-conference.
Forma baz e projektit mbshtet tre kanale t komunikimit t t
dhenave (channel data) pr operacionet e veta: nj video channel
pr video broadcast, nj audio channel pr audio broadcast dhe
nj text channel pr text broadcast. Secili antar q futet n nj
grup mund t ndaj video, audio apo text me anetart e tjer t
grupit. Para se t hyhet n grup, secili antar pyetet pr emr dhe
ikon q e reprezentojn at. Antareve u lejohet t hyjn n
grup, apo t dalin nga ai, sa her q deshirojn ata. Megjithat,
nj antar nuk mund t jet n 2 grupe njkohsisht.

Dizajni
JavaGroupsVC sht e ndar n komponent individual q kryejn
funksione t caktuara. JavaGroupsVC ka 2 lloje t manager, lloji i
par sht Channel Manager q ndrtohet nga AudioManager,
VideoManager, dhe TextManager, ndrsa lloji i dyt sht Data
4

Structure Manager. Psh nse marrim instancn e UserInfo q


strukturon t gjitha informatat pr prdoruesit, menagjer pr t
sht UserInfoManager q prkujdeset pr operactionet q
ndryshojn informatat pr prdoruesin n databaz, si psh shtimi i
nj prdoruesi te ri, fshirja e prdoruesit aktual, ndrrimi i emrit
dhe ikons se prdoruesit, etj.

Arkitektura
JavaGroupsVC eshte e ndrtuar nga nj arkitektur e shtresuar. 3
shtresat kryesore jan: GUI layer, Control layer, dhe Data Layer.

d. Chat me File Transfer


Chat me File Transfer sht zgjerim i projektit
VideoConference. Zgjerimi konsiston ne shtimin e nj Channel
Manager-i (FileManager), shtimin e mesazheve te kontrollit ne
MembershipManager, shtimin e Media Capture komponents pr
file, dhe shtimin e komponentve GUI. Prshkrimi mbi
funksionimin, dizajnin dhe arkitekturn sht trsisht i njjt me
VideoConference.

2. far sht punuar?


Projekti i zgjeruar Chat me File Transfer sht vese i prfunduar.
sht shtuar logjika e transferit t fajllave e prshkuar n hyrje,
komponent GUI q prfshin butona pr paraqitje t lists s fajllave t
pranuar, dhe butona pr qasje n fajlla dhe n folldera t fajllave direkt
nga programi.
N vijim paraqesim listn e klasave t shtuara/ndryshuara n projekt s
bashku me numrin e vijave te kodit q jan shtuar/hequr. Pr detajet
teknike q jan shtuar brenda klasave, mund ta shikojm kodin.
a) Ndryshimet n versionin e par funksional:
+1-0
src/JavaGroupsVC.java
+12-0
src/VideoConference/ControlManager/ControlMessage/FileChannelBCastMsg.java
+12-0
src/VideoConference/ControlManager/ControlMessage/MediaControlMessage/FileBcastMessag
e/EndFileBcastMsg.java
+12-0
src/VideoConference/ControlManager/ControlMessage/MediaControlMessage/FileBcastMessag
e/StartFileBcastMsg.java
+12-0
src/VideoConference/ControlManager/ControlMessage/MediaControlMessage/FileBcastMessag
e/StartFileBcastRequestDeniedMsg.java
+12-0
src/VideoConference/ControlManager/ControlMessage/MediaControlMessage/FileBcastMessag
e/StartFileBcastRequestGrantedMsg.java
+12-0
src/VideoConference/ControlManager/ControlMessage/MediaControlMessage/FileBcastMessag
e/StartFileBcastRequestMsg.java
+5-0
src/VideoConference/ControlManager/GroupsManager.java
+154-9
src/VideoConference/ControlManager/MembershipManager.java
+9-0
src/VideoConference/ControlManager/UserInfo.java
+14-0
src/VideoConference/DataManager/DataMessage/EndFileMsg.java
+17-0
src/VideoConference/DataManager/DataMessage/FileMsg.java
+12-0
src/VideoConference/DataManager/DataMessage/FileNameMsg.java
+14-0
src/VideoConference/DataManager/DataMessage/StartFileMsg.java
+109-0
src/VideoConference/DataManager/FileManager.java
+28-0
src/VideoConference/GUI/GUIManager.java
+113-0

src/VideoConference/Media/Capture/FileReaderThread.java
+2-0
src/JavaGroupsVC.java
+9-18
src/VideoConference/DataManager/FileManager.java
+124-0
src/VideoConference/GUI/AcceptedFilesFrame.java
+27-3
src/VideoConference/GUI/GUIManager.java
+0-7
src/VideoConference/Media/Capture/FileReaderThread.java

3. Si funksionon programi?
Programi prdor JavaGroups si platform komunikimi. Komunikimi
ndodh prmes kanaleve q ndrtohen nga nje ChannelFactory.
ChannelFactory mundson fleksibilitet n krijimin e kanaleve t
komunikimit duke mundsuar specifikim fleksibil te protokollit t
komunikimit.
Prgjat programit krijohen nj mori e kanaleve te komunikimit me
vetin e lartprmendur, ndr me t rndsishmit jan kanali pr
transmetim te tekstit, kanali pr transmetim te file-ave dhe kanali pr
transmetim t informatave mbi pjestart n chat.
Veti specfike default e do kanali sht transmetimi broadcast.
Komunikimi sht i organizuar n grupe. Secili prdorues i programit
mund t krijoj nj grup. Me rastin e krijimit t nj grupi q ndodh pas
promptimit nga GUI komponentja, n t njjtn komponent thirret
metoda connectToGroup e cila ndr t tjerash krijon kanalin e
komunikimit me protokollin prkats. Element tjetr i rndsishm q
krijohet brenda asaj metode sht dhe PullPushAdapter i cili merr si
parametr kanalin e komunikimit dhe vetveten n 2 raste, sepse
manager-i prkats sht edhe MessageListener edhe
MembershipListener. PullPushAdapter thirr metodn receieve t
listenerit prderisa listener!=null. Brenda metods receive bhet
degzimi prkats varsisht nga hapat q duhet ndjekur pas pranimit t
paketave prkatse q nuk jan t t njjtit lloj, pr kt ekziston edhe
degzimi. Drgimi i paketave n rastin e drgimit t file-ave ndodh nga
nj thread i veant q definohet me klasn FileThreadReader.

Dergimi i file-it iniciohet me rastin e ekzekutimit t ksaj linje t kodit:


membershipManager.sendStartFileBcastRequestMsg();
Kjo metod brenda vets krijon nj mesazh t tipit
StartFileBcastRequestMsg dhe thirr linjn channel.Send(msg).
Kjo shkakton thirrjen e metods receive te listenerit
MembershipManager. Brenda ksaj metode ndodhet degzimi if (msg
instanceof StartFileBcastRequestMsg) n t cilin thirret nj metod
tjetr me emrin sendStartFileBcastRequestGrantedMsg(msg.GetSrc()),
kjo njejt krijon brenda vets nj mesazh t tipit
StartFileBcastRequestGrantedMsg dhe thirre linjn channel.Send(msg).
Kjo shkakton thirrjen e metods receive te listenerit
MembershipManager. Brenda ksaj metode ndodhet degzimi if( msg
instanceof StartFileBcastRequestGrantedMsg) n t cilin merret
referenca e menagjerit t file-ave FileManager dhe t njejtit i drgohet
ky mesazh:
fileManager.setupBroadcastChannel(guiManager.getFile().getPath(),
guiManager.getFile().getName(),guiManager.getFileList()) q e bn gati
kanalin pr broadcast. Menjher pas ksaj thirret linja:
guiManager.getFileManager().startBroadcastMedia() q shnon edhe
fillimin e transmetimit t fileave. Detaje m t hollsishme do t
tregohen gjat prezentimit.

4. far probleme jan hasur deri ne kohn e prezantimit?


Problemi i pare ka konsistuar ne funksionalizimin e projektit baze, pr
shkaqe te kompatibilitetit. Probleme te tjera prfshin vshtirsi ne
kuptimin e strukturs se programit, mos dokumentimi detaj i metodave
dhe i parametrave te tyre, etj.

10

5. Referencat

[1] http://www.cs.cornell.edu/info/projects/javagroupsnew/

11

You might also like