Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


dad:ejercicioprotocolos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
dad:ejercicioprotocolos [2023/11/13 10:53] thejuanvisudad:ejercicioprotocolos [2023/11/23 11:30] (actual) thejuanvisu
Línea 4: Línea 4:
 ===== Elemento ===== ===== Elemento =====
 Este será la clase con el que trabajaremos: Este será la clase con el que trabajaremos:
-<code>+<code java Elemento.java>
 public class Elemento{ public class Elemento{
   //Atributos:   //Atributos:
Línea 22: Línea 22:
  
 Este será el cliente que utilizaremos para enviar señales al serverSocket, este cliente permanecerá activo permitiendo enviar mensajes al servidor hasta que se envíe el comando EXIT y se reciba la señal "cerrado" del servidor. Este será el cliente que utilizaremos para enviar señales al serverSocket, este cliente permanecerá activo permitiendo enviar mensajes al servidor hasta que se envíe el comando EXIT y se reciba la señal "cerrado" del servidor.
-<code>+<code java Cliente.java>
 public class Cliente{ public class Cliente{
-  try{//Se debe hacer siempre try Catch cuando andamos con sockets +  public void ejecutar{ 
-    socket = new Socket("localhost", 5000);//Inicializamos nuevo socket con IP y Puerto+    try{//Se debe hacer siempre try Catch cuando andamos con sockets 
 +      socket = new Socket("localhost", 5000);//Inicializamos nuevo socket con IP y Puerto
          
-    //Buffers de lectura y escritura: +      //Buffers de lectura y escritura: 
-    BufferedReader br = new BufferedReader(new InputStramReader(socket.getInputStream())); +      BufferedReader br = new BufferedReader(new InputStramReader(socket.getInputStream())); 
-    PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));+      PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
          
-    Scanner sc = new Scanner(System.in);//Para leer por teclado +      Scanner sc = new Scanner(System.in);//Para leer por teclado 
-    String rl = ""; //Aqui guardamos cada línea leída+      String rl = ""; //Aqui guardamos cada línea leída
          
-    do{//repetimos contenido hasta que se reciba "Cerrado" +        do{//repetimos contenido hasta que se reciba "Cerrado" 
-      pw.println(sc.nextLine());//Leemos del teclado con sc y enviamos al servidor con pw +        pw.println(sc.nextLine());//Leemos del teclado con sc y enviamos al servidor con pw 
-      pw.flush(); Limpiamos salida+        pw.flush(); Limpiamos salida
              
-      //Recibimos línea del servidor con br, la almacenamos en rl y la mostramos en pantalla: +        //Recibimos línea del servidor con br, la almacenamos en rl y la mostramos en pantalla: 
-      System.out.println((rl = br.readLine()))  +        System.out.println((rl = br.readLine()))  
-    }while(lineaLeida.contentEquals("Cerrado")==false)//Mientras no se reciba una señal de cierre+      }while(lineaLeida.contentEquals("Cerrado")==false)//Mientras no se reciba una señal de cierre
          
-  }catch(IOException e){//en caso de salir excepción +    }catch(IOException e){//en caso de salir excepción 
-    e.printStackTrace();+      e.printStackTrace(); 
 +    }
   }   }
 } }
- 
 public static void main(String[] args){ public static void main(String[] args){
   (new Cliente()).ejecutar();   (new Cliente()).ejecutar();
Línea 53: Línea 54:
  
 ===== Servidor ===== ===== Servidor =====
-<code>+<code java Server.java>
 public class Server{ public class Server{
   ServerSocket serverSocket;//Declaramos Socket Servidor   ServerSocket serverSocket;//Declaramos Socket Servidor
Línea 84: Línea 85:
 En el ServerThread extendemos la funcionalidad de Thread e implementamos la funcionalidad del server Socket. En este caso lo que hará nuestro servidor es reaccionar a los comandos que se le manden y en caso de recibir un comando inválido enviar un mensaje indicando que el comando no es válido. En el ServerThread extendemos la funcionalidad de Thread e implementamos la funcionalidad del server Socket. En este caso lo que hará nuestro servidor es reaccionar a los comandos que se le manden y en caso de recibir un comando inválido enviar un mensaje indicando que el comando no es válido.
  
-<code>+<code java ServerThread.java>
 public class ServerThread extends Thread{ public class ServerThread extends Thread{
      
Línea 124: Línea 125:
             }             }
             break;             break;
-            +           
 +          //Comando GET, formato: Get Nombre (Get patata)
           case "GET":           case "GET":
             if(linealeida.legth==2){ //Si el comando tiene GET + el Nombre             if(linealeida.legth==2){ //Si el comando tiene GET + el Nombre
Línea 144: Línea 146:
             }else{             }else{
               pw.println(linealeida[0]+"no tiene estructura valida\nUso: GET Nombre");               pw.println(linealeida[0]+"no tiene estructura valida\nUso: GET Nombre");
 +              pw.flush();
 +            }
 +            break;
 +          
 +          //Comando DELETE, uso: DELETE Nombre (DELETE Patata)
 +          case "DELETE":
 +            if(linealeida.lenght == 2){
 +              ArrayList<Elemento> Elementos = null;
 +              Elementos = Server.listaElementos.get(lineaLeida[1]);
 +              if((Elementos==null || Elementso.size()==0)){
 +                pw.println("no hay elementos para este nombre");
 +                pw.flush();
 +             
 +              }else{
 +                Elementos.remove(elementos.size()-1);
 +                pw.println("elemento borrado con éxito");
 +                pw.flush();
 +              }
 +            }else{
 +              pw.println(linealeida[0] + "se ha usado incorrectamente\nUso: DELETE Patata")
 +            }
 +            break;
 +          
 +          
 +          
 +          //Comando de salida EXIT
 +          case "EXIT":
 +            if(lineaLeida.leght==1){
 +              pw.println("Cerrado");
 +              pw.flush();
 +            }else{
 +              pw.printl("el comando EXIT tiene demasiados elementos")
               pw.flush();               pw.flush();
             }             }
 +            break;
 +            
 +          //En caso de introducir comando invalido
 +          default:
 +            pw.prinln("comando inexistente");
 +            pw.flush;
             break;             break;
                          
Línea 162: Línea 202:
 </code> </code>
  
 +===== DELETE =====
 +
 +<code java>
 +case "DELETE":
 +
 +if(linealeida.length == 2) {
 + ArrayList<Elemento> elementos;
 +
 + elementos = Server.listaElementos.get(linealeida[1]);
 +
 + if(elementos == null) {
 + pw.println("El elemento en cuestion no existe");
 + pw.flush();
 + }else {
 + elementos.remove(elementos.size()-1);
 + pw.println("Eliminado");
 + pw.flush();
 + }
 +
 +}else {
 + pw.println("Mal uso del comando DELETE");
 + pw.flush();
 +}
 +
 +break;
 +</code>
dad/ejercicioprotocolos.1699872798.txt.gz · Última modificación: 2023/11/13 10:53 por thejuanvisu