Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/03/2014, 12:51
educacanis
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 14 años, 4 meses
Puntos: 12
Respuesta: Chat en Java para 5 clientes

SERVER_THREAD
Código Java:
Ver original
  1. import java.net.*;
  2. import java.io.*;
  3.  
  4. public class Server_Thread extends Thread {
  5.     protected Socket clientSocket;
  6.  
  7.     public Server_Thread(Socket clientSoc) {
  8.         clientSocket = clientSoc;
  9.     }
  10.  
  11.     public void run() {
  12.         System.out.println("Iniciando hilo......");
  13.  
  14.         try {
  15.             PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),
  16.                     true);
  17.             BufferedReader in = new BufferedReader(new InputStreamReader(
  18.                     clientSocket.getInputStream()));
  19.  
  20.             String inputLine;
  21.             String nombreReceptor;
  22.  
  23.             //recoge lo que ha recibido y lo devuelvo al mismo hilo
  24.             while ((inputLine = in.readLine()) != null) {  
  25.                
  26.                
  27.                 //nombreReceptor =
  28.                 System.out.println("Server: " + inputLine);
  29.                 // para hacer ECHO, le envio lo que he recibido
  30.                 out.println("ECHO:"+ clientSocket.getPort() + inputLine);
  31.  
  32.                 if (inputLine.equals("Bye."))
  33.                     break;
  34.             }
  35.  
  36.             out.close();
  37.             in.close();
  38.             clientSocket.close();
  39.  
  40.         } catch (IOException e) {
  41.             System.err.println("Problem with Communication Server");
  42.             System.exit(1);
  43.         }
  44.     }
  45. }

CLIENTE

Código Java:
Ver original
  1. import java.io.*;
  2. import java.net.*;
  3. import java.util.Scanner;
  4.  
  5. public class Cliente implements Runnable {
  6.     private static Scanner teclado = new Scanner(System.in);
  7.  
  8.     private String serverHostname = new String("127.0.0.1");
  9.     private int port = 5000;
  10.     private String nombre = "clienteSinNombre";
  11.  
  12.     public Cliente(String serverHostname, int port, String nombre) {
  13.         super();
  14.         this.serverHostname = serverHostname;
  15.         this.port = port;
  16.         this.nombre = nombre;
  17.     }
  18.  
  19.     public Cliente() {
  20.     }
  21.  
  22.     public void run() {
  23.         String nombreReceptor = "";
  24.  
  25.         System.out.println("Intentando conexión del cliente " + nombre
  26.                 + " al servidor" + serverHostname + " en puerto " + port);
  27.  
  28.         Socket echoSocket = null;
  29.         PrintWriter out = null;
  30.         BufferedReader in = null;
  31.  
  32.         try {
  33.             echoSocket = new Socket(serverHostname, 5000);
  34.  
  35.             out = new PrintWriter(echoSocket.getOutputStream(), true);
  36.             in = new BufferedReader(new InputStreamReader(
  37.                     echoSocket.getInputStream()));
  38.  
  39.         } catch (UnknownHostException e) {
  40.             System.err.println("No conozco el servidor: " + serverHostname);
  41.             System.exit(1);
  42.         } catch (IOException e) {
  43.             System.err.println("No consigo entrar " + "al servidor "
  44.                     + serverHostname);
  45.             System.exit(1);
  46.         }
  47.  
  48.         String userInput = "";
  49.        
  50.         System.out.println("¿Con quien te quieres comunicar?");
  51.         nombreReceptor = teclado.next();
  52.  
  53.         try {
  54.             do{
  55.                 // recoge el mensaje que escribe el cliente
  56.                 System.out.println("Escribe:");
  57.                 userInput = teclado.nextLine();
  58.                 out.println(nombreReceptor + "@" + userInput); // lo envía al servidor
  59.  
  60.                 // end loop
  61.                 if (userInput.equals("Bye."))
  62.                     break;
  63.  
  64.                 System.out.println("echo: " + in.readLine());
  65.             }while (true);
  66.         } catch (IOException e) {
  67.             // TODO Auto-generated catch block
  68.             e.printStackTrace();
  69.         }
  70.  
  71.         out.close();
  72.         try {
  73.             in.close();
  74.             // stdIn.close();
  75.             echoSocket.close();
  76.         } catch (IOException e) {
  77.             // TODO Auto-generated catch block
  78.             e.printStackTrace();
  79.         }
  80.  
  81.     }
  82. }


Solo tiene que funcionar en CONSOLE de Eclipse no tiene que tener interfaz