miércoles, 25 de noviembre de 2015

Clase SevidorPacman

//SERVIDOR Q ESCUCHA LAS CONEXIONES --------------------------------
import java.awt.EventQueue;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

import javax.swing.JTextArea;


public class SevidorPacman implements Runnable {

private int cliente;
private int puerto ;
private int maximoConexiones ; // Maximo de conexiones simultaneas
private int bandera=0;
private ServerSocket servidor ;
private Socket socket ;
private ArrayList <Socket> listaclientes ;
private Partida partida ;
private BaseDatos bd = null;
private DataInputStream entradaDatos;
private DataOutputStream salidaDatos;
private JTextArea print;
private Thread hilo ;
private String Usuario;
private String [] mensajeRecibido;

public static void main(String[] args) {

//SevidorPacman servidor = new SevidorPacman();
}


public SevidorPacman(JTextArea p){
       
print = p;
         puerto = 1234;
         maximoConexiones = 1000; // Maximo de conexiones simultaneas
         servidor = null;
       
         socket = null;
         listaclientes= new ArrayList <Socket>();
         cliente = 0;
       
         bd = new BaseDatos();
         //partida = new Partida();
       
       
    }

public void decrementarCliente(){
cliente--;
}

public void startServer(){
hilo = new Thread(this);
     hilo.start();
   
}


public void iniciarPartidaServidor(){

partida.iniciar();
}

public boolean validaCredencialesCliente(){

boolean respuesta = false ;

try {
        entradaDatos = new DataInputStream(socket.getInputStream());
        mensajeRecibido = entradaDatos.readUTF().split(" ");
        print.append("\n"+"Se conecto el Usuario: "+ mensajeRecibido[0].toUpperCase()+ "\n");
        respuesta = bd.validaLoginUser(mensajeRecibido[0], mensajeRecibido[1]);
        return respuesta;
       
         
       } catch (IOException ex) {
        System.out.println("Error al crear los stream de entrada Servidor : " + ex.getMessage());
    }


return respuesta;
}

public void enviarRespuestaCliente(String envio){

try {
salidaDatos = new DataOutputStream (socket.getOutputStream());
salidaDatos.writeUTF(envio);
       
           
        } catch (IOException ex) {
        System.out.println("Error al crear los stream de salida Servidor  : " + ex.getMessage());
     }

}


@Override
public void run() {
// TODO Auto-generated method stub

partida = new Partida();

        try {
            // Se crea el serverSocket
            servidor = new ServerSocket(puerto, maximoConexiones);
           
            // Bucle infinito para esperar conexiones
            while (true && cliente<=maximoConexiones) {
                cliente ++;
            //System.out.println("Servidor a la espera de conexiones.");
                print.append("-----------------------------------" + "\n");
                print.append("Servidor a la espera de conexiones." + "\n");
                print.append("-----------------------------------" + "\n");
                socket = servidor.accept();
                print.append("Cliente IP Origen: " + socket.getInetAddress().getHostName() + " conectado.");
               
                if (validaCredencialesCliente()) {
                Usuario = mensajeRecibido[0];
                listaclientes.add(socket);
                    ClienteServidor cc = new ClienteServidor(socket,listaclientes,cliente,this,partida,Usuario,bd);
                    cc.start();
                    enviarRespuestaCliente("1");
                   

                 }
               else{
                enviarRespuestaCliente("0");
                print.append("Fallo la autentificacion"+ "\n");
               }
            }
           
        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
        } finally{
            try {
                socket.close();
                servidor.close();
            } catch (IOException ex) {
            System.out.println("Error al cerrar el servidor: " + ex.getMessage());
            }
        }

}

}



No hay comentarios:

Publicar un comentario