aplicatie client server java

9
CERINȚELE PROIECTULUI Definirea cerinţelor : Aplicaţie în Java pentru un sistem de chat. Aplicaţia va facilita comunicarea intre mai multe calculatoare fiind necesar ca un calculator să fie server la care se vor conecta restul pentru a putea intra in chat; Design-ul aplicaţiei va fii simplu astfel încât sa poată facilita o comunicare ușoară și rapidă ; Conectarea la server se va face prin intermediul unui user și o parolă , care vor fii introduse la început ; Fiecare client conectat la sesiunea de chat va putea vizualiza mesajele trimise de oricare client conectat la sesiune; Un user conectat fiind la serverul de chat are posibilitatea de a se deconecta utilizind o comandă specifică , posibilitate de a vizualiza toate persoanele conectate la server de chat printr-o comanda specific. Posibilitate de a dezvolta aplicaţia in timp ușor și rapid.

Upload: torjoc-florin

Post on 18-Sep-2015

115 views

Category:

Documents


5 download

DESCRIPTION

Simpla aplicatie client server

TRANSCRIPT

APLICATIE CLIENT/SERVER IN JAVA

CERINELE PROIECTULUI XE "CERINELE PROIECTULUI" Definirea cerinelor :

Aplicaie n Java pentru un sistem de chat.

Aplicaia va facilita comunicarea intre mai multe calculatoare fiind necesar ca un calculator s fie server la care se vor conecta restul pentru a putea intra in chat; Design-ul aplicaiei va fii simplu astfel nct sa poat facilita o comunicare uoar i rapid ; Conectarea la server se va face prin intermediul unui user i o parol , care vor fii introduse la nceput ; Fiecare client conectat la sesiunea de chat va putea vizualiza mesajele trimise de oricare client conectat la sesiune; Un user conectat fiind la serverul de chat are posibilitatea de a se deconecta utilizind o comand specific , posibilitate de a vizualiza toate persoanele conectate la server de chat printr-o comanda specific. Posibilitate de a dezvolta aplicaia in timp uor i rapid.SPECIFICAIILE XE "SPECIFICAIILE" Specificaii sistem de rulareAplicatia de chat client server construita in java cu ajutorul platformei Eclipse versiunea 3.4.0 , JRE versiunea 6 .Modul de instalare al aplicatiei se fac asemanator pe server , respectiv pe calculatorul client.Cerinte sistem server:

Sistem de operare Windows XP sau LINUX 1000 MHz procesor

256 MB RAM

300 MB spatiu pe HDD pentru aplicatie

Conexiune la retea sau internet TCP/IP JRE versiunea 6 instalata

Cerinte sistem client:

Sistem de operare Windows XP 1000 MHz procesor

256 MB RAM

300 MB spatiu pe HDD pentru aplicatie

Conexiune la retea sau internet TCP/IP JRE versiunea 6 instalata

Specificaiile tehnice ale aplicaiei :Server:

Serverul va gestiona in mare parte traficul de pachete de comenzi / date primite de la utilizatori si trimise la acestia; conecatrea la server se va face prin protocolul tcp/ip utilizand socket si un anumit port de conectare.Clientul se va conecta la server cunoscind ip-ul acestuia , soketul si portul vor fii aceleasi si la server si la client.Orice client care se conecteaza la server va trebuii sa aibe un nume diferit fata de cei care sunt deja conectati , astfel serverul va acorda conectarea la chat a utilizatorului doar dupa ce sa verificat in lista de useri conectati daca nu mai exista vreunul cu acelasi nume , sau optional se va testa si o parola, in cazul in care mai exista un client cu acelasi nume serverul trimite cleintului un mesaj de eroare avertizindul ca numele mai exista sau ca parola este gresita(in cazul in care sunt 2 cu acelasi nume serverul poate sa accepte conexiunea insa ii va schmba numele utilizatorului) .La orice cerere serverul poate pune la dispozitie unui client lista de clienti conectati in momentul de fata daca sa cerut asta printr-o comanda .Orice client conectat va putea trimite mesaje catre server care vor fii tratate ca atare , comenzile si mesajele sunt tratate diferit , insa serverul trebuie sa le proceseze si dupa primirea lor va trimite catre utilizator un mesaj de atentionare operatie pachet primit cu succes.Mesajele primite de server de la clienti vor fii trimise toturor clientilor inclusiv celui care a trimis mesajul , astfel se usureaza modul de tratare a mesajelor.

Faptul ca un user sa conectat sau deconectat de la chat va fii procesat de catre server scotindul din lista de useri sau adaugandul si in acelasi timp se va trimite mesaj catre cei conectati anuntindui ca userul X sa conectat sau deconectat de la chat .Client : Aplicaia client se conecteaz la server printr-un ip i port care sunt date ca i parametrii , in caz contrar se va alege ca server localhost i un port prestabilit n program.Pentu logare pe server va fii necesar ca user-ul s specifice un nume de client , care va fii verificat de catre server dac mai exista sau nu , in cazul in care exist deja acelasi nume se va trimite un mesaj specific i se va face recitirea numelui.

Clientul va primii pe ecran o list de comenzi , si va putea scrie mesaje care vor fii trimise catre toti participantii la chat . Se va creea un thread pentru fiecare client . La cerere clientul poate sa plece de pe pe chat cu o comanda specifica , serverul va trata aceasta comanda si va sterge thread-ul clientului si va trimite comanda de iesire clientului care o va procesa. Tot la cerere se poate accesa lista de clienti , orice client care va utiliza comanda ex:/list va primii de la server lista clientilor.Aceasta list este un array list care memoreaza numele fiecarui client conectat la chat, ea se modifica daca sa creeat sau sters un client thread.Datorit faptului c se utilizeaza multithread pentru conextiuni un protocol complex nu exista , datele sunt trimise brut , iar clientul / serverul le va procesa apoi va rula actiunea pentru fiecare in parte.

DEZVOLTAREA APLIATIEI

Aplicatia de chat client server dezvoltat n JAVA cu ajutorul platformei Eclipse versiunea 3.4.0 , JRE versiunea 6 .

Modulele aplicatiei:SERVERAplicaia server stabileste conexiunile intre clienti si executa comenzile clientilor ; este compus din 2 clase , i anume :

public class MultiThreadChatServer{} clasa in care se fac initializarile server si ciclu infinit in care se asteapta conectarea userilor apoi in cazul in care exista client care doreste sa se conecteze se creeaza o noua instant a clasei clientThread : // ne creem 10 obiecte de tip client, deci se vor putea conecta 10 clienti la server static clientThread t[] = new clientThread[10];

// se incearca deschiderea soket-ului de catre server

try {

serverSocket = new ServerSocket(port_number); } catch (IOException e)

{System.out.println(e);}

/ Crearea unui obiect socket din ServerSocket care s asculte i s accepte/ / conexiuni./ / Stream-urile de intrare/iesire vor fii in thread-ul clientului din moment ce fiecare client este servit ca thread //individualwhile(true){

try {

clientSocket = serverSocket.accept();

for(int i=0; i