SlideShare a Scribd company logo
1 of 30
Download to read offline
SÒCOLS

  4   Servidors i fils
SERVIDORS
                     Servidors iteratius
         ①   Escolta una petició d’un client.
         ②   Processa la petició del client.
         ③   Respon al client.
Servidor ④   Torna a bloquejar-se a l’espera d’una nova petició.
         ⑤   Mentre es processa la petició del 1r client, poden arribar
             noves peticions que hauran de quedar a l’espera.



     En el sistema solament existirà 1 petició com a
               màxim que s’estigui resolent.

   Aquesta solució solament s’utilitza quan la petició del
      client es pot gestionar en un temps molt petit.
SERVIDORS
                      Servidors iteratius
Inici del servidor

Crear ServerSocket                             Crida bloquejant
 Bucle infinit


                     socket = serverSocket.accept()



                       Llegir missatge del socket




                        Processar missatge




                       Enviar resposta pel socket
SERVIDORS
        Servidors iteratius: Desavantatges

 El problema és que tot client ha d’esperar el seu
  torn per ser atès.

 Si un d’ells demana un arxiu molt gran, la resta
  haurà d’esperar.

 La major part d’espera és degut a les operacions
  I/O, hi ha capacitat de CPU desaprofitada.
SERVIDORS
        Servidors multicast (Broadcasting)

 El multicast és un mètode d’adreçament IP. Una
  adreça multicast està associada amb un grup de
  receptors interessats.

 D’acord amb el RFC 3171, les adreces IP des de
  la 224.0.0.0 a les 239.255.255.255 estan
  adreçades per ser adreces de multicast.
SERVIDORS
        Servidors multicast (Broadcasting)

 Aquest rang s’anomena, formalment, “classe D”.

 L’emissor envia un únic datagrama (des de
  l’adreça unicast de l’emissor) a l’adreça multicast
  i l’encaminador s’encarregarà de fer còpies i
  enviar-les a tots els receptors que hagin informat
  del seu interès per les dades d’aquest emissor.
SERVIDORS
                   Servidors multicast: El servidor
// Crearem el MulticastSocket sense especificar el port
MulticastSocket s = new MulticastSocket ();

// Crearem el grup multicast:
InetAddress group = InetAddress.getByName (“231.0.0.1”);

// Crearem un datagrama buit en principi:
byte [] buit = new byte [0];

// Crear el Datagrama (missatge, grandària miss, grup Multicast i port):
DatagramPacket dgp = new DatagramPacket (buit, 0, group, 100000);

// Enviem el paquet
s.send (dgp);

//Tanquem el socket
s.close ();
SERVIDORS
                       Servidors multicast: El client
// Crearem un socket multicast en el port 10000
MulticastSocket s = new MulticastSocket (10000);

// Configurarem el grup (IP) al que ens connectarem:
InetAddress group = InetAddress.getByName (“231.0.0.1”);

// Ens unim al grup:
s.joinGroup (group);

// Rebem el paquet del socket:
DatagramPacket dgp = new DatagramPacket (buffer, buffer.length);
s.receive (dgp);

// Sortim del grup multicast
s.leaveGroup (group);

//Tanquem el socket
s.close ();
SERVIDORS
           Servidors multicast: Servidor (1)
Tot el que escrivim per teclat des del servidor multicast serà
                     rebut pels clients.
SERVIDORS
           Servidors multicast: Servidor (2)
Tot el que escrivim per teclat des del servidor multicast serà
                     rebut pels clients.
SERVIDORS
               Servidors multicast: Client (1)
 El client estarà subscrit a l’adreça multicast en el port específic per
rebre tot el que emeti el servidor. sempre estarà escoltant al servidor
                                 multicast
SERVIDORS
               Servidors multicast: Client (2)
 El client estarà subscrit a l’adreça multicast en el port específic per
rebre tot el que emeti el servidor. sempre estarà escoltant al servidor
                                 multicast
SERVIDORS
                    Servidors concurrents
         ① Escolta una petició d’un client.
         ② Quan li arriba una petició del client, comença un nou procés
           per gestionar aquesta consulta.
Servidor ③ El nou servidor gestiona la totalitat de la consulta.
         ④ Quan s’ha processat completament, aquest nou procés
           finalitza.
         ⑤ Es torna al primer punt.


   El servidor executa un nou procés per gestionar cada consulta.
                 Cada client té el seu “propi” servidor.
SERVIDORS
Servidors concurrents
SERVIDORS
             Servidors concurrents

Hi ha processos separats per atendre el port i
 per transferir la resposta i/o el resultat de la
                     petició


                                       CLIENT
 SERVIDOR

             4444                      CLIENT



                                       CLIENT
SERVIDORS
             Servidors concurrents

Hi ha processos separats per atendre el port i
 per transferir la resposta i/o el resultat de la
                     petició


                                       CLIENT
 SERVIDOR

             4444
SERVIDORS
               Servidors concurrents

Després de que el client contacti amb el servidor, aquest
  crea un altre procés per atendre al client i quedar-se
    escoltant el port 4444 a l’espera d’un nou client



                                             CLIENT
SERVIDOR

                4444
                                             CLIENT
SERVIDORS
               Servidors concurrents

Després de que el client contacti amb el servidor, aquest
  crea un altre procés per atendre al client i quedar-se
    escoltant el port 4444 a l’espera d’un nou client



                                             CLIENT
SERVIDOR

                4444
                                             CLIENT
SERVIDORS
               Servidors concurrents
El servidor crea un altre procés i es queda escoltant el
          port 4444 a l’espera d’un nou client

                                             CLIENT
 SERVIDOR

               4444
                                             CLIENT
SERVIDORS
            Servidors concurrents

  Un tercer client contacta amb el servidor..


                                       CLIENT
SERVIDOR

            4444
                                       CLIENT



                                       CLIENT
SERVIDORS
            Servidors concurrents

 Es crea un tercer procés esclau (un nou fil)..


                                       CLIENT
SERVIDOR

            4444
                                       CLIENT



                                       CLIENT
SERVIDORS
          Servidors concurrents: La classe Thread

   En Java, la concurrència l’aconseguim
          utilitzant fils d’execució
Es defineix una classe
derivada de Thread

   Codi a executar en
   cada fil dins del
   mètode run( )


  Es llença el fil
  amb start ( )
SERVIDORS
    Servidors concurrents: Diversos fils d’execució

 En el fil principal s’executa permanentment el mètode
  accept( )
       S’espera l’establiment de noves connexions

 Per cada client que es connecta, es llença un nou fil
  d’execució per gestionar aquesta connexió


               Client 1                    Master

                                     Servidor
               Client 2                 1
                                     Servidor
                                        2
                                     Servidor
               Client 3                 3
SERVIDORS
                            Servidors concurrents

 Ara tenim varis sòcols (sockets) associats al mateix port.
      Per identificar al sòcol destí s’ha de tenir en compte
       l’adreça (adreça IP + port) del sòcol origen.

IP:              IP:                                   IP:        IP:
132.1.5.5        62.7.8.9                              62.7.8.9   183.7.6.5
Port: 1245       Port: 80                              Port: 80   Port: 2115

                             Master     Servidor 1Servidor 2
                              Socket      Socket   Socket
                                       Transport
      Client 1                                                      Client 2
                                         Xarxa
      Socket                                                        Socket
    Transport                           Enllaç                    Transport
      Xarxa                              Físic                      Xarxa
      Enllaç                                                        Enllaç
       Físic                           Internet                      Físic
SERVIDORS
                Servidor concurrent TCP

 El servidor enviaria a cada client el temps transcorregut
  en milisegons.
SERVIDORS
Microservidor web iteratiu
SERVIDORS
             Microservidor web iteratiu

• La clase StringTokenizer permet dividir un string en
  substrings o tokens en base a un altre string.

    Per exemple, si treballem amb un string consistent en
     nom i cognoms separats per espais en blanc, la classe
     StringTokenizer facilitarà trencar aquest string en 3
     substrings basat en que el caràcter delimitador és un
     espai en blanc.

• El mètode nextToken() retorna una subcadena (String) que
  és el següent token de la cadena. Podríem imaginar que,
  per cada cop que es crida a aquest mètode hi ha un
  apuntador que es posiciona en el següent token.
SERVIDORS
         Microservidor web iteratiu




El servidor no implementa el protocol
HTTP correctament.

Funciona gràcies a que el navegador
s’adapta.
SERVIDORS
                    Servidor multiprotocol

Es tracta d’un servidor que
proporciona diversos serveis:

 Per exemple, servidor d’eco
                                               Inici
  TCP i UDP en la mateixa
  aplicació.
                                     Servei
     Es    llencen   varis   fils            Servei B   Servei C
                                       A
      d’execució    perquè    un
      bloqueig en un accept() o
      en un receive() no bloquegi
      el funcionament de la resta
      de serveis.
SERVIDORS
Servidor multiprotocol

More Related Content

More from Oriol Torres

Economia col·laborativa, turisme col·laboratiu i KangApp
Economia col·laborativa, turisme col·laboratiu i KangAppEconomia col·laborativa, turisme col·laboratiu i KangApp
Economia col·laborativa, turisme col·laboratiu i KangAppOriol Torres
 
Presentation of Treat or Treat
Presentation of Treat or TreatPresentation of Treat or Treat
Presentation of Treat or TreatOriol Torres
 
Presentación pública Treat or Treat
Presentación pública Treat or TreatPresentación pública Treat or Treat
Presentación pública Treat or TreatOriol Torres
 
1213 Threads [4] Sincronització
1213 Threads [4] Sincronització1213 Threads [4] Sincronització
1213 Threads [4] SincronitzacióOriol Torres
 
1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxers1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxersOriol Torres
 
1213 Threads [3] Semafors
1213 Threads [3] Semafors1213 Threads [3] Semafors
1213 Threads [3] SemaforsOriol Torres
 
1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrent1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrentOriol Torres
 
1213 serveis [5] Correu electronic i pagines web
1213 serveis [5] Correu electronic i pagines web1213 serveis [5] Correu electronic i pagines web
1213 serveis [5] Correu electronic i pagines webOriol Torres
 
1213 Sockets [1] Introducció
1213 Sockets [1] Introducció1213 Sockets [1] Introducció
1213 Sockets [1] IntroduccióOriol Torres
 
1213 Sockets [3] Programació
1213 Sockets [3] Programació1213 Sockets [3] Programació
1213 Sockets [3] ProgramacióOriol Torres
 
1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i fils1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i filsOriol Torres
 
Appetite apps stats market
Appetite apps stats marketAppetite apps stats market
Appetite apps stats marketOriol Torres
 

More from Oriol Torres (12)

Economia col·laborativa, turisme col·laboratiu i KangApp
Economia col·laborativa, turisme col·laboratiu i KangAppEconomia col·laborativa, turisme col·laboratiu i KangApp
Economia col·laborativa, turisme col·laboratiu i KangApp
 
Presentation of Treat or Treat
Presentation of Treat or TreatPresentation of Treat or Treat
Presentation of Treat or Treat
 
Presentación pública Treat or Treat
Presentación pública Treat or TreatPresentación pública Treat or Treat
Presentación pública Treat or Treat
 
1213 Threads [4] Sincronització
1213 Threads [4] Sincronització1213 Threads [4] Sincronització
1213 Threads [4] Sincronització
 
1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxers1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxers
 
1213 Threads [3] Semafors
1213 Threads [3] Semafors1213 Threads [3] Semafors
1213 Threads [3] Semafors
 
1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrent1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrent
 
1213 serveis [5] Correu electronic i pagines web
1213 serveis [5] Correu electronic i pagines web1213 serveis [5] Correu electronic i pagines web
1213 serveis [5] Correu electronic i pagines web
 
1213 Sockets [1] Introducció
1213 Sockets [1] Introducció1213 Sockets [1] Introducció
1213 Sockets [1] Introducció
 
1213 Sockets [3] Programació
1213 Sockets [3] Programació1213 Sockets [3] Programació
1213 Sockets [3] Programació
 
1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i fils1213 Threads [1] Programació concurrent, processos i fils
1213 Threads [1] Programació concurrent, processos i fils
 
Appetite apps stats market
Appetite apps stats marketAppetite apps stats market
Appetite apps stats market
 

1213 Sockets [4] Servidors i fils

  • 1. SÒCOLS 4 Servidors i fils
  • 2. SERVIDORS Servidors iteratius ① Escolta una petició d’un client. ② Processa la petició del client. ③ Respon al client. Servidor ④ Torna a bloquejar-se a l’espera d’una nova petició. ⑤ Mentre es processa la petició del 1r client, poden arribar noves peticions que hauran de quedar a l’espera. En el sistema solament existirà 1 petició com a màxim que s’estigui resolent. Aquesta solució solament s’utilitza quan la petició del client es pot gestionar en un temps molt petit.
  • 3. SERVIDORS Servidors iteratius Inici del servidor Crear ServerSocket Crida bloquejant Bucle infinit socket = serverSocket.accept() Llegir missatge del socket Processar missatge Enviar resposta pel socket
  • 4. SERVIDORS Servidors iteratius: Desavantatges  El problema és que tot client ha d’esperar el seu torn per ser atès.  Si un d’ells demana un arxiu molt gran, la resta haurà d’esperar.  La major part d’espera és degut a les operacions I/O, hi ha capacitat de CPU desaprofitada.
  • 5. SERVIDORS Servidors multicast (Broadcasting)  El multicast és un mètode d’adreçament IP. Una adreça multicast està associada amb un grup de receptors interessats.  D’acord amb el RFC 3171, les adreces IP des de la 224.0.0.0 a les 239.255.255.255 estan adreçades per ser adreces de multicast.
  • 6. SERVIDORS Servidors multicast (Broadcasting)  Aquest rang s’anomena, formalment, “classe D”.  L’emissor envia un únic datagrama (des de l’adreça unicast de l’emissor) a l’adreça multicast i l’encaminador s’encarregarà de fer còpies i enviar-les a tots els receptors que hagin informat del seu interès per les dades d’aquest emissor.
  • 7. SERVIDORS Servidors multicast: El servidor // Crearem el MulticastSocket sense especificar el port MulticastSocket s = new MulticastSocket (); // Crearem el grup multicast: InetAddress group = InetAddress.getByName (“231.0.0.1”); // Crearem un datagrama buit en principi: byte [] buit = new byte [0]; // Crear el Datagrama (missatge, grandària miss, grup Multicast i port): DatagramPacket dgp = new DatagramPacket (buit, 0, group, 100000); // Enviem el paquet s.send (dgp); //Tanquem el socket s.close ();
  • 8. SERVIDORS Servidors multicast: El client // Crearem un socket multicast en el port 10000 MulticastSocket s = new MulticastSocket (10000); // Configurarem el grup (IP) al que ens connectarem: InetAddress group = InetAddress.getByName (“231.0.0.1”); // Ens unim al grup: s.joinGroup (group); // Rebem el paquet del socket: DatagramPacket dgp = new DatagramPacket (buffer, buffer.length); s.receive (dgp); // Sortim del grup multicast s.leaveGroup (group); //Tanquem el socket s.close ();
  • 9. SERVIDORS Servidors multicast: Servidor (1) Tot el que escrivim per teclat des del servidor multicast serà rebut pels clients.
  • 10. SERVIDORS Servidors multicast: Servidor (2) Tot el que escrivim per teclat des del servidor multicast serà rebut pels clients.
  • 11. SERVIDORS Servidors multicast: Client (1) El client estarà subscrit a l’adreça multicast en el port específic per rebre tot el que emeti el servidor. sempre estarà escoltant al servidor multicast
  • 12. SERVIDORS Servidors multicast: Client (2) El client estarà subscrit a l’adreça multicast en el port específic per rebre tot el que emeti el servidor. sempre estarà escoltant al servidor multicast
  • 13. SERVIDORS Servidors concurrents ① Escolta una petició d’un client. ② Quan li arriba una petició del client, comença un nou procés per gestionar aquesta consulta. Servidor ③ El nou servidor gestiona la totalitat de la consulta. ④ Quan s’ha processat completament, aquest nou procés finalitza. ⑤ Es torna al primer punt. El servidor executa un nou procés per gestionar cada consulta. Cada client té el seu “propi” servidor.
  • 15. SERVIDORS Servidors concurrents Hi ha processos separats per atendre el port i per transferir la resposta i/o el resultat de la petició CLIENT SERVIDOR 4444 CLIENT CLIENT
  • 16. SERVIDORS Servidors concurrents Hi ha processos separats per atendre el port i per transferir la resposta i/o el resultat de la petició CLIENT SERVIDOR 4444
  • 17. SERVIDORS Servidors concurrents Després de que el client contacti amb el servidor, aquest crea un altre procés per atendre al client i quedar-se escoltant el port 4444 a l’espera d’un nou client CLIENT SERVIDOR 4444 CLIENT
  • 18. SERVIDORS Servidors concurrents Després de que el client contacti amb el servidor, aquest crea un altre procés per atendre al client i quedar-se escoltant el port 4444 a l’espera d’un nou client CLIENT SERVIDOR 4444 CLIENT
  • 19. SERVIDORS Servidors concurrents El servidor crea un altre procés i es queda escoltant el port 4444 a l’espera d’un nou client CLIENT SERVIDOR 4444 CLIENT
  • 20. SERVIDORS Servidors concurrents Un tercer client contacta amb el servidor.. CLIENT SERVIDOR 4444 CLIENT CLIENT
  • 21. SERVIDORS Servidors concurrents Es crea un tercer procés esclau (un nou fil).. CLIENT SERVIDOR 4444 CLIENT CLIENT
  • 22. SERVIDORS Servidors concurrents: La classe Thread En Java, la concurrència l’aconseguim utilitzant fils d’execució Es defineix una classe derivada de Thread Codi a executar en cada fil dins del mètode run( ) Es llença el fil amb start ( )
  • 23. SERVIDORS Servidors concurrents: Diversos fils d’execució  En el fil principal s’executa permanentment el mètode accept( )  S’espera l’establiment de noves connexions  Per cada client que es connecta, es llença un nou fil d’execució per gestionar aquesta connexió Client 1 Master Servidor Client 2 1 Servidor 2 Servidor Client 3 3
  • 24. SERVIDORS Servidors concurrents  Ara tenim varis sòcols (sockets) associats al mateix port.  Per identificar al sòcol destí s’ha de tenir en compte l’adreça (adreça IP + port) del sòcol origen. IP: IP: IP: IP: 132.1.5.5 62.7.8.9 62.7.8.9 183.7.6.5 Port: 1245 Port: 80 Port: 80 Port: 2115 Master Servidor 1Servidor 2 Socket Socket Socket Transport Client 1 Client 2 Xarxa Socket Socket Transport Enllaç Transport Xarxa Físic Xarxa Enllaç Enllaç Físic Internet Físic
  • 25. SERVIDORS Servidor concurrent TCP  El servidor enviaria a cada client el temps transcorregut en milisegons.
  • 27. SERVIDORS Microservidor web iteratiu • La clase StringTokenizer permet dividir un string en substrings o tokens en base a un altre string.  Per exemple, si treballem amb un string consistent en nom i cognoms separats per espais en blanc, la classe StringTokenizer facilitarà trencar aquest string en 3 substrings basat en que el caràcter delimitador és un espai en blanc. • El mètode nextToken() retorna una subcadena (String) que és el següent token de la cadena. Podríem imaginar que, per cada cop que es crida a aquest mètode hi ha un apuntador que es posiciona en el següent token.
  • 28. SERVIDORS Microservidor web iteratiu El servidor no implementa el protocol HTTP correctament. Funciona gràcies a que el navegador s’adapta.
  • 29. SERVIDORS Servidor multiprotocol Es tracta d’un servidor que proporciona diversos serveis:  Per exemple, servidor d’eco Inici TCP i UDP en la mateixa aplicació. Servei  Es llencen varis fils Servei B Servei C A d’execució perquè un bloqueig en un accept() o en un receive() no bloquegi el funcionament de la resta de serveis.