Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
dad:repasoparcial1 [2023/11/09 10:04] – creado thejuanvisu | dad:repasoparcial1 [2023/11/09 11:13] (actual) – thejuanvisu | ||
---|---|---|---|
Línea 9: | Línea 9: | ||
* No se puede escribir en ambos extremos a la vez, tampoco se debe poder leer en los 2 extremos a la vez ya que podemos bloquear el programa (Ambos esperan a que el otro termine de leer) | * No se puede escribir en ambos extremos a la vez, tampoco se debe poder leer en los 2 extremos a la vez ya que podemos bloquear el programa (Ambos esperan a que el otro termine de leer) | ||
* ServerSocket: | * ServerSocket: | ||
+ | |||
+ | ===== Contenido parcial 1 ===== | ||
+ | - Preguntas pequeñas de teoría 2 a 3 puntos | ||
+ | - Computación distribuida | ||
+ | - Hilos | ||
+ | - Sockets | ||
+ | - Preguntas programación 1 a 2 Puntos | ||
+ | - Detectar Fallos en el código | ||
+ | - Práctica | ||
+ | - Implementar un Cliente y un servidor con Sockets | ||
+ | - El profe se va a inventar un protocolo/ | ||
+ | - Ver que respuesta dan el servidor a un comando de un cliente por sockets (Como el chat pero con Cases) | ||
+ | - Server Socket -> While True, lanzo hilo | ||
+ | - Si un cliente tiene un listado de algo que guarda en el objeto hilo | ||
+ | - Los hilos comparten la información para estar centralizados | ||
+ | - Conexión con otros hilos a través del serverSocket | ||
+ | < | ||
+ | constructor< | ||
+ | this.x = x; | ||
+ | } | ||
+ | run(){ | ||
+ | this.x | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Sugerencias/ | ||
+ | |||
+ | * Si pide un protocolo, en el cliente debemos tener como un menú de consola o meter cosas para usar el protocolo y que el cliente mande algo al servidor para que este ejecute lo que tenga que escribir | ||
+ | * Construimos el servidor para el protocolo. El Servidor debe tener un Switch para que haga una acción en función a lo que reciba del cliente | ||
+ | * El cliente debe ser de base un cliente vacío que tenga un readln y un flush (PW.println()), | ||
+ | * Para cada comando o funcionalidad del servidor debemos ejecutar el cliente y meter algo por teclado, para evitar perder tiempo debemos ir metiendo todos los comandos que queramos ejecutar a machete. | ||
+ | < | ||
+ | // | ||
+ | While True | ||
+ | Creamos server socket | ||
+ | Acepto conexión | ||
+ | Creo Hilo | ||
+ | Lanzo Hilo | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Utilizaremos una implementación similar a la del chat de clase (Multicliente) | ||
+ | |||
+ | |||
+ | |||
+ | ===== Para la práctica (Incompleto) ===== | ||
+ | |||
+ | < | ||
+ | public class ClaseAGuardar implements Serializable{ | ||
+ | private String campo; | ||
+ | public String getCampo(){ | ||
+ | return campo; | ||
+ | } | ||
+ | public String setCampo(String campo){ | ||
+ | this.campo = campo; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | public class EscribirEnFichero{ | ||
+ | public static void main(String args[]){ | ||
+ | FileOutputStream fos = null; | ||
+ | ObjectOutputStream oos= null; | ||
+ | } | ||
+ | } | ||
+ | </ | ||