Servidor de Chat con Hilos

Servidor.java
import java.util.ArrayList; import java.net.ServerSocket; import java.io.IOException; import java.io.PrintStream; import java.net.Socket; public class Servidor { public static ArrayList<Socket> cliente = new ArrayList<Socket>(); public static void main (String [] args) { ServerSocket servidor; try { servidor = new ServerSocket(4000); HiloEscuchaLlegadaCliente h = new HiloEscuchaLlegadaCliente(servidor); h.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void enviar(String m) { PrintStream p; for(Socket temp:cliente){ try { p = new PrintStream (temp.getOutputStream()); p.println(m); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
HiloEscuchaLlegadaCliente.java
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class HiloEscuchaLlegadaCliente extends Thread { ServerSocket servidor; public HiloEscuchaLlegadaCliente (ServerSocket servidor) { this.servidor = servidor; } public void run(){ Socket s; while(true){ try { s = servidor.accept(); Servidor.cliente.add(s); HiloEscuchaCliente h = new HiloEscuchaCliente(s); h.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
HiloEscuchaCliente.java
import java.io.IOException; import java.net.Socket; import java.util.Scanner; public class HiloEscuchaCliente extends Thread { Socket s; public HiloEscuchaCliente(Socket s){ this.s = s; } public void run () { Scanner a; try { a = new Scanner(s.getInputStream()); while(true){ Servidor.enviar(a.nextLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Ahora el cliente para el chat Cliente.java
import java.io.IOException; import java.io.PrintStream; import java.net.Socket; import java.util.Scanner; public class Cliente { public static void main(String [] args){ try { Socket s = new Socket("127.0.0.1", 4000); HiloEscucha h = new HiloEscucha (s, "Cliente"); h.start(); Scanner a = new Scanner (System.in); PrintStream p; p = new PrintStream(s.getOutputStream()); while(true){ System.out.println("Yo: "); p.println(a.nextLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
HiloEscucha.java
import java.io.IOException; import java.net.Socket; import java.util.Scanner; public class HiloEscucha extends Thread { Socket s; // El que se crea al establecer la conexión String m; //Donde escucha el hilo public HiloEscucha (Socket s, String m) { this.m = m; this.s = s; } public void run (){ Scanner a; try { a = new Scanner(s.getInputStream()); while(true){ System.out.println(m+"dice: "+a.nextLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Trackback URL for "Servidor de Chat con Hilos"
http://www.odiolasllaves.com.ar/trackback/105
»
- Inicie sesión o regístrese para enviar comentarios

gracias por subir la info
suelo copiar todo al revés.. me vienen muy bien tus aportes muchas veces. se agradece. un abrazo.
Me alegro que sirva. Mi idea
Me alegro que sirva. Mi idea original era hacer algo mas comentado, pero por lo general no me hago el tiempo.
En teoría cualquier usuario registrado puede editar la documentación, sientanse libres de agregar o modificar.
Cualquier otra sugerencia en cuanto al contenido o funcionalidad es bien recibida.
Gracias por comentar, es grato ver que a alguien le sirve