1213 Sockets [4] Servidors i fils

198 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
198
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

1213 Sockets [4] Servidors i fils

  1. 1. SÒCOLS 4 Servidors i fils
  2. 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. 3. SERVIDORS Servidors iteratiusInici del servidorCrear ServerSocket Crida bloquejant Bucle infinit socket = serverSocket.accept() Llegir missatge del socket Processar missatge Enviar resposta pel socket
  4. 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. 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. 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. 7. SERVIDORS Servidors multicast: El servidor// Crearem el MulticastSocket sense especificar el portMulticastSocket 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 paquets.send (dgp);//Tanquem el sockets.close ();
  8. 8. SERVIDORS Servidors multicast: El client// Crearem un socket multicast en el port 10000MulticastSocket 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 multicasts.leaveGroup (group);//Tanquem el sockets.close ();
  9. 9. SERVIDORS Servidors multicast: Servidor (1)Tot el que escrivim per teclat des del servidor multicast serà rebut pels clients.
  10. 10. SERVIDORS Servidors multicast: Servidor (2)Tot el que escrivim per teclat des del servidor multicast serà rebut pels clients.
  11. 11. SERVIDORS Servidors multicast: Client (1) El client estarà subscrit a l’adreça multicast en el port específic perrebre tot el que emeti el servidor. sempre estarà escoltant al servidor multicast
  12. 12. SERVIDORS Servidors multicast: Client (2) El client estarà subscrit a l’adreça multicast en el port específic perrebre tot el que emeti el servidor. sempre estarà escoltant al servidor multicast
  13. 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.
  14. 14. SERVIDORSServidors concurrents
  15. 15. SERVIDORS Servidors concurrentsHi 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. 16. SERVIDORS Servidors concurrentsHi ha processos separats per atendre el port i per transferir la resposta i/o el resultat de la petició CLIENT SERVIDOR 4444
  17. 17. SERVIDORS Servidors concurrentsDespré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 CLIENTSERVIDOR 4444 CLIENT
  18. 18. SERVIDORS Servidors concurrentsDespré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 CLIENTSERVIDOR 4444 CLIENT
  19. 19. SERVIDORS Servidors concurrentsEl 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. 20. SERVIDORS Servidors concurrents Un tercer client contacta amb el servidor.. CLIENTSERVIDOR 4444 CLIENT CLIENT
  21. 21. SERVIDORS Servidors concurrents Es crea un tercer procés esclau (un nou fil).. CLIENTSERVIDOR 4444 CLIENT CLIENT
  22. 22. SERVIDORS Servidors concurrents: La classe Thread En Java, la concurrència l’aconseguim utilitzant fils d’execucióEs defineix una classederivada de Thread Codi a executar en cada fil dins del mètode run( ) Es llença el fil amb start ( )
  23. 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. 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.5Port: 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. 25. SERVIDORS Servidor concurrent TCP El servidor enviaria a cada client el temps transcorregut en milisegons.
  26. 26. SERVIDORSMicroservidor web iteratiu
  27. 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. 28. SERVIDORS Microservidor web iteratiuEl servidor no implementa el protocolHTTP correctament.Funciona gràcies a que el navegadors’adapta.
  29. 29. SERVIDORS Servidor multiprotocolEs tracta d’un servidor queproporciona 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.
  30. 30. SERVIDORSServidor multiprotocol

×