sockets chat

14
Cercul de Rich Internet Applications Utilizarea socketurilor pentru comunicarea în timp real Facultatea de Informatică Iași

Upload: university-al-i-cuza-of-iasi-romania

Post on 22-Jun-2015

896 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Sockets   Chat

Cercul de Rich Internet ApplicationsUtilizarea socketurilor pentru

comunicarea în timp real

Facultatea de InformaticăIași

Page 2: Sockets   Chat

http://www.info.uaic.ro/~flash 2

• Socket-urile sunt utilizate pentru comunicarea în timp real.

• Există două protocoale de bază:TCP (transport control protocol), UDP (user datagram protocol)

• TCP este sigur (fiecare pachet care pleacă de la sursă va fi confirmat de către destinatar)

• UDP este mai rapid (deoarece sursa nu mai așteaptă confirmări) - problema este că pachetele pierdute nu sunt retransmise

Comunicare

Page 3: Sockets   Chat

http://www.info.uaic.ro/~flash 3

• În unele cazuri este preferată comunicarea TCP (de exemplu într-un joc online nu se admit pierderi de pachete – dacă s-ar pierde chiar pachetul în care eroul a omorât monstrul, clientul ar putea crede că acesta este încă în viață)

Comunicare

Page 4: Sockets   Chat

http://www.info.uaic.ro/~flash 4

• În unele cazuri este preferată comunicarea UDP – atunci când transmitem voce, nici nu ne interesează ca aplicația sursă să retransmită un pachet care s-a pierdut acum două secunde.

• De asemenea într-o astfel de aplicație (pentru transmiterea de voce) ne interesează viteza cu care are loc comunicarea.

Comunicare

Page 5: Sockets   Chat

http://www.info.uaic.ro/~flash 5

• Vom utiliza comunicarea TCP (sigură) pentru a realiza un chat.

• Un calculator din Internet este identificat printr-o adresă unică – adresa IP. Va trebui să utilizăm o astfel de adresă pentru a ști cui transmitem (sau care este serverul).

• Pentru a identifica aplicația căreia îi transmitem informația vom utiliza un număr special denumit port (o valoare între 0 – 65535).

Comunicare - TCP

Page 6: Sockets   Chat

http://www.info.uaic.ro/~flash 6

• Adresa IP împreună cu portul formează un socket care este identificat de obicei printr-o scriere de tipul: [adresa_ip:port]

• Exemplu: 192.168.1.1 : 4444

Comunicare - TCP

Page 7: Sockets   Chat

http://www.info.uaic.ro/~flash 7

• Exemplificarea componentelor Flex– Controls– Layout

• Folosirea socket-urilor și tratarea evenimentelor• Componenta server – deja facută în Java

Use Case - XChat

Page 8: Sockets   Chat

http://www.info.uaic.ro/~flash 8

• Controls– Label, TextInput, TextArea, Button

• Layout– HBox, VBox

Flex Components

Page 9: Sockets   Chat

http://www.info.uaic.ro/~flash 9

• connect(url, port)• addEventListener(EventType, handler)– Event.CONNECT– ProgressEvent.SOCKET_DATA

• writeUTFBytes(string + “\n”)

Obiectul Socket

Page 10: Sockets   Chat

http://www.info.uaic.ro/~flash 10

Interfața - Layout

widht=“100%” height=“100%”

Page 11: Sockets   Chat

http://www.info.uaic.ro/~flash 11

Interfața – id-uriid=“username”

id=“ecran”

action=“sendData()”Id=“textInput”

initialize=“init()”

Page 12: Sockets   Chat

http://www.info.uaic.ro/~flash 12

public function init():void{

sock.addEventListener(ProgressEvent.SOCKET_DATA, newData);

sock.addEventListener(Event.CONNECT, connectHdlr);sock.connect(“192.168.0.1”, 4444);

}

COD

Page 13: Sockets   Chat

http://www.info.uaic.ro/~flash 13

public function sendData():void{

sock.writeUTFBytes(username.text + ": " + txtInput.text + "\n");

sock.flush();txtInput.text = "";

}public function newData(e:ProgressEvent):void{

ecran.text +=sock.readUTFBytes(sock.bytesAvailable);}

Mai mult COD

Page 14: Sockets   Chat

http://www.info.uaic.ro/~flash 14

Să vedem cine este primul care ne trimite un mesaj