Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| dad:ejercicioprotocolos [2023/11/13 10:53] – thejuanvisu | dad: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: | ||
| - | < | + | < |
| public class Elemento{ | public class Elemento{ | ||
| // | // | ||
| Línea 22: | Línea 22: | ||
| Este será el cliente que utilizaremos para enviar señales al serverSocket, | Este será el cliente que utilizaremos para enviar señales al serverSocket, | ||
| - | < | + | < |
| public class Cliente{ | public class Cliente{ | ||
| - | try{//Se debe hacer siempre try Catch cuando andamos con sockets | + | |
| - | socket = new Socket(" | + | |
| + | socket = new Socket(" | ||
| | | ||
| - | | + | |
| - | 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())); |
| | | ||
| - | | + | |
| - | String rl = ""; | + | String rl = ""; |
| | | ||
| - | | + | |
| - | pw.println(sc.nextLine());// | + | pw.println(sc.nextLine());// |
| - | pw.flush(); Limpiamos salida | + | pw.flush(); Limpiamos salida |
| | | ||
| - | | + | |
| - | System.out.println((rl = br.readLine())) | + | System.out.println((rl = br.readLine())) |
| - | }while(lineaLeida.contentEquals(" | + | }while(lineaLeida.contentEquals(" |
| | | ||
| - | | + | |
| - | 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 ===== | ||
| - | < | + | < |
| public class Server{ | public class Server{ | ||
| ServerSocket serverSocket;// | ServerSocket serverSocket;// | ||
| 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. | ||
| - | < | + | < |
| 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 " | case " | ||
| 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]+" | pw.println(linealeida[0]+" | ||
| + | pw.flush(); | ||
| + | } | ||
| + | break; | ||
| + | | ||
| + | //Comando DELETE, uso: DELETE Nombre (DELETE Patata) | ||
| + | case " | ||
| + | if(linealeida.lenght == 2){ | ||
| + | ArrayList< | ||
| + | Elementos = Server.listaElementos.get(lineaLeida[1]); | ||
| + | if((Elementos==null || Elementso.size()==0)){ | ||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | |||
| + | }else{ | ||
| + | Elementos.remove(elementos.size()-1); | ||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | } | ||
| + | }else{ | ||
| + | pw.println(linealeida[0] + "se ha usado incorrectamente\nUso: | ||
| + | } | ||
| + | break; | ||
| + | | ||
| + | | ||
| + | | ||
| + | //Comando de salida EXIT | ||
| + | case " | ||
| + | if(lineaLeida.leght==1){ | ||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | }else{ | ||
| + | pw.printl(" | ||
| pw.flush(); | pw.flush(); | ||
| } | } | ||
| + | break; | ||
| + | | ||
| + | //En caso de introducir comando invalido | ||
| + | default: | ||
| + | pw.prinln(" | ||
| + | pw.flush; | ||
| break; | break; | ||
| | | ||
| Línea 162: | Línea 202: | ||
| </ | </ | ||
| + | ===== DELETE ===== | ||
| + | |||
| + | <code java> | ||
| + | case " | ||
| + | |||
| + | if(linealeida.length == 2) { | ||
| + | ArrayList< | ||
| + | |||
| + | elementos = Server.listaElementos.get(linealeida[1]); | ||
| + | |||
| + | if(elementos == null) { | ||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | }else { | ||
| + | elementos.remove(elementos.size()-1); | ||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | } | ||
| + | |||
| + | }else { | ||
| + | pw.println(" | ||
| + | pw.flush(); | ||
| + | } | ||
| + | |||
| + | break; | ||
| + | </ | ||