//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