Foros del Web » Programación para mayores de 30 ;) » Java »

Introduccion a Servlets

Estas en el tema de Introduccion a Servlets en el foro de Java en Foros del Web. Tengo un código que no entiendo del todo, parece simple y entiendo mucho de él, pero no llego a decifrarlo del todo. Código: class ServidorRaya{ ...
  #1 (permalink)  
Antiguo 07/11/2014, 11:00
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 7 meses
Puntos: 31
Introduccion a Servlets

Tengo un código que no entiendo del todo, parece simple y entiendo mucho de él, pero no llego a decifrarlo del todo.

Código:
class ServidorRaya{
	
	ServerSocket s;
	int clientes;
	
	//Lanza la aplicación del servidor
	void lanzarServidor()	{
		System.out.println("lanzar servidor");
		try{
			s=new ServerSocket(5001,50);	//conexión por el puerto 5001 y máximo de 50 clientes conectados
			while(true)new NuevoCliente(s.accept(),this,clientes++).start();
		}catch(IOException ioe){
			System.out.print(ioe);
		}
	}
	public void anadir(String texto) {
		 System.out.println("texto "+texto);	//añadir un nuevo cliente
	}
	public static void main(String args[]){
		ServidorRaya Servidor=new ServidorRaya();
		Servidor.lanzarServidor();
	}
}
class NuevoCliente extends Thread{
	Socket conexion;
	ServidorRaya serv;
	int cliente;
	DataInputStream entrada;
	DataOutputStream salida;
	int [][] tablero= new int [3][3];
	
	NuevoCliente(Socket c,ServidorRaya s,int numero){
		try {//Entrada de un nuevo cliente
			System.out.println("Nuevo Clinte entrada");
			InetAddress ia=c.getInetAddress();
			System.out.println(ia.getHostName());
			System.out.println(InetAddress.getLocalHost());
			conexion=c;
			serv=s;
			cliente=numero;			
			entrada=new DataInputStream(conexion.getInputStream());
			salida=new DataOutputStream(conexion.getOutputStream());
		}
		catch(IOException e){
			System.out.println(e);
		}
	}
	
	public void run(){	//método run, obligatorio en el thread
		boolean Salir=false;
		System.out.println("run");
		serv.anadir("cliente "+cliente+" se ha conectado \n"); //añadir el cliente al servidor
		for(int i=0;i<3;i++) for(int j=0;j<3;j++)tablero[i][j]=0;
		while(!Salir){
			try{
				String cadena=entrada.readUTF(); //Lee posición del cliente
				if (cadena.equals("Nuevo")) //Si se acabó la partida, para empezar un juego nuevo
					for (int i=0;i<3;i++)for(int j=0;j<3;j++)tablero[i][j]=0;
				else{
					cadena=CalucarResultado(cadena); //Calcula una posición disponible aleatoria
					//Pintar();	//muestra el resultado por consola
					salida.writeUTF(cadena); //devulve la posición al cliente en formato x#y
				}
			}catch(SocketException se){
				Salir=true;
			}catch(IOException e){
				Salir=true;
				System.out.println(e);
			}
		}
		serv.anadir("Se ha ido el cliente " +cliente+"\n");
		try{
			conexion.close();
		}catch(IOException e){
			System.out.println(e);
		}
	}

	void Pintar(){
		for(int i=0;i<3;i++){
			for(int j=0;j<3;j++)System.out.print(tablero[i][j]+" ");
			System.out.println();
		}
	}

	String CalucarResultado(String cad){
		int i,j,pos=0;
		pos=cad.indexOf("#");
		i=Integer.parseInt(cad.substring(0,pos));
		j=Integer.parseInt(cad.substring(pos+1,cad.length()));
		System.out.println("Cliente:"+i+" "+j);
		tablero[i][j]=1;	//pone la posición dada por el cliente en la matriz
		do{												//posición aleatoria libre
			i=(int)(Math.random()*3);
			j=(int)(Math.random()*3);
		}
		while(tablero[i][j]==1 || tablero[i][j]==2 );	//posición aleatoria libre
		tablero[i][j]=2;
		cad=String.valueOf(i)+"#"+String.valueOf(j);	//Cadena de posición del servidor
		return cad;	
	}
}
es un juego de las 3 en raya. Por otro lado tengo el código del cliente, en el cual se dibuja el tablero de las 3 en raya y manda la ficha clickada al servidor. Me gustaría entender este código en la parte del server y de tratar al cliente, que parece muy sencillo, para así darle yo otros usos.

(He de añadir lo que dice en comentarios que he de mencionar al autor Borja de la web de http://www.todojava.tk (Web que he visto ya no está en funcionamiento))

Alguien podría decirme de donde puedo sacar un manual sencillo para aprender a hacer servidores sencillos como este?

Última edición por Kritik; 07/11/2014 a las 11:11
  #2 (permalink)  
Antiguo 07/11/2014, 12:42
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Introduccion a Servlets

Eso no es un servlet.

http://es.wikipedia.org/wiki/Java_Servlet

Esta debe ser una versión más nueva de esa página

http://todojava.awardspace.com/programas-java.html
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: introduccion, servlets, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:59.