0% encontró este documento útil (0 votos)
616 vistas7 páginas

Servidor Java Multicliente con Threads

Este documento describe cómo crear un servidor en Java que pueda admitir múltiples clientes simultáneamente utilizando hilos. El servidor crea un hilo separado para cada cliente que se conecta para manejar la comunicación de forma independiente. Los clientes se conectan al servidor y envían y reciben mensajes. El servidor imprime mensajes para mostrar la comunicación con cada cliente individual.

Cargado por

jhonedward
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
616 vistas7 páginas

Servidor Java Multicliente con Threads

Este documento describe cómo crear un servidor en Java que pueda admitir múltiples clientes simultáneamente utilizando hilos. El servidor crea un hilo separado para cada cliente que se conecta para manejar la comunicación de forma independiente. Los clientes se conectan al servidor y envían y reciben mensajes. El servidor imprime mensajes para mostrar la comunicación con cada cliente individual.

Cargado por

jhonedward
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

COMUNICACIN ENTRE UN SERVIDOR Y MLTIPLES CLIENTES

Creacin de un servidor en Java que soporte varios clientes al mismo tiempo con el uso de threads Hace unos das veamos cmo hacer que un programa cliente y un programa servidor intercambiaran mensajes desde distintos puntos de la red: Comunicacin cliente servidor. Hoy veremos cmo hacer lo mismo pero dando soporte a muchos clientes al mismo tiempo utilizando para cada uno de ellos un Thread o Hilo. a estructura cliente!servidor es bastante similar" sin embargo" introducimos el concepto de #eceptor. $ara cada cliente que se conecte al servidor crearemos un nuevo hilo en el mismo que se encargar% de gestionar el cliente. &ste receptor lo representamos con la clase Java: ServidorHilo.java

import java.io.*; import java.net.*; import java.util.logging.*;

public class ServidorHilo extends Thread {

private Socket socket; private DataOutputStream dos; private Data nputStream dis; private int idSessio;

public ServidorHilo!Socket socket" int id# {

this.socket $ socket; this.idSessio $ id; tr% { dos $ ne& DataOutputStream!socket.getOutputStream!##; dis $ ne& Data nputStream!socket.get nputStream!##; ' catch ! O(xception ex# { )ogger.get)ogger!ServidorHilo.class.get*ame!##.log!)evel.S(+(,(" null" ex#; ' '

public void desconnectar!# { tr% { socket.close!#; ' catch ! O(xception ex# { )ogger.get)ogger!ServidorHilo.class.get*ame!##.log!)evel.S(+(,(" null" ex#; ' '

-Override public void run!# { String accion $ ..; tr% { accion $ dis.read/T0!#; i1!accion.e2uals!.hola.##{ S%stem.out.println!.(l cliente con idSesion .3this.idSessio3. saluda.#; dos.&rite/T0!.adios.#;

'

' catch ! O(xception ex# { )ogger.get)ogger!ServidorHilo.class.get*ame!##.log!)evel.S(+(,(" null" ex#; '

desconnectar!#; ' '

&n el constructor creamos dos bu''ers (uno de entrada y otro de salida) para gestionar los envos y recibos del cliente" y dentro del m*todo #+, gestionamos qu* hacer cuando recibamos un mensaje del cliente.

Servidor
a clase Servidor.java se encarga de asignar un nuevo Thread a cada nueva cone-in.
import java.io.*; import java.net.*; import java.util.logging.*;

public class Servidor {

public static void main!String args45# thro&s O(xception {

ServerSocket ss; S%stem.out.print!. niciali6ando servidor... .#;

tr% { ss $ ne& ServerSocket!789:;#; S%stem.out.println!.<t4O=5.#; int idSession $ 8; &hile !true# { Socket socket; socket $ ss.accept!#; S%stem.out.println!.*ueva conexi>oacute;n entrante? .3socket#; !!ServidorHilo# ne& ServidorHilo!socket" idSession##.start!#; idSession33; '

' catch ! O(xception ex# { )ogger.get)ogger!Servidor.class.get*ame!##.log!)evel.S(+(,(" null" ex#; ' ' '

Cliente
&l Clien e.java lo representamos mediante otra clase llamada $ersona que se encarga de enviar y recibir los mesnajes que vienen y van del servidor.
import java.io.*; import java.net.Socket; import java.util.*; import java.util.logging.*;

class @ersona extends Thread {

protected Socket sk; protected DataOutputStream dos; protected Data nputStream dis; private int id;

public @ersona!int id# { this.id $ id; '

-Override public void run!# { tr% { sk $ ne& Socket!.7A:.8.8.7." 789:;#; dos $ ne& DataOutputStream!sk.getOutputStream!##; dis $ ne& Data nputStream!sk.get nputStream!##;

S%stem.out.println!id 3 . env>iacute;a saludo.#; dos.&rite/T0!.hola.#; String respuesta$..; respuesta $ dis.read/T0!#; S%stem.out.println!id 3 . Servidor devuelve saludo? . 3 respuesta#; dis.close!#; dos.close!#;

sk.close!#; ' catch ! O(xception ex# { )ogger.get)ogger!@ersona.class.get*ame!##.log!)evel.S(+(,(" null" ex#; ' ' '

public class Bliente {

public static void main!String45 args# { Crra%)istDthreadE clients $ ne& Crra%)istDthreadE!#; 1or !int i $ 8; i D 9; i33# { clients.add!ne& @ersona!i##; ' 1or !Thread thread ? clients# { thread.start!#; ' ' ' DFthreadEDFthreadE

Como ejemplo" se crean . clientes que se conectan al servidor. Prohibida la reproduccin total o parcial de este artculo sin el previo consentimiento de Webtutoriales.com
http?FF&&&.&ebtutoriales.comFarticulosFcomunicacionGentreGunGservidorG%GmultiplesGclientes

También podría gustarte