Please enable JavaScript.
Coggle requires JavaScript to display documents.
SistDist: Sockets - Coggle Diagram
SistDist: Sockets
Implementación
Cliente
Se puede realizar con una clase auxiliar o con una sola clase para toda la implementación
Todo en uno
La clase cliente solo tiene un método main con un bucle del que se saldrá cuando el cliente cumpla cierta condición y quiera cerrár la sesión
Flujo
Crea un Scanner y lee la entrada
Scanner teclado = new Scanner(System.in);
Instancia en el try() un MyStreamSocjet recibiendo cómo parámetro una InetAdress y un número de puerto (8888 normalmente)
try (MyStreamSocket dataSocket = new MyStreamSocket(InetAddress.getByName("localhost"), 8888)) {
Abre el bucle condicional
boolean finSesion = false;
try {
while (!finSesion) {
// RESTO DE LA IMPL
}
}
Dentro del bucle while
1 more item...
Con una clase auxiliar, la clase del cliente en la parte de tratar la respuesta, haría llamadas a métodos del auxiliar que hagan la llamada, reciban la respuesta, y devuelvan los datos
Servidor
Para una implementación concurrente
Clase servidor
No tiene atributos, sólo un main con un bucle while infinito
Flujo
Crea el ServerSocket
try (ServerSocket serverSocket = new ServerSocket(8888)){
Abre un while infinito
Instancia el MyStreamSocket
, que recibe como parámetro el resultado de serverSocket.accept()
MyStreamSocket dataSocket = new MyStreamSocket(serverSocket.accept());
Crea un Thread (clase de java) pasándole como parámetro un HiloServidor (nuestra clase para gestionar concurrencia), a su vez el HiloServidor recibe el data Socket
Thread theThread = new Thread(new HiloServidorCalculadora(dataSocket));
1 more item...
Para resumir
nº de puerto ➜ ServerScoket.accept() ➜ MyStreamSocket ➜ HiloServidor ➜ Thread.start()
Clases importantes involucradas
ServerSocket
Se instancia en un try al inicio de la ejecución
El resultado de su .accept() se pasa como parámetro al MyStreamSocket
Recibe un puerto como parámetro
Thread
Clase java
Recibe como parámetro un objeto de la clase de hilo que nosotros creamos
El método .start() activa el hilo al final del bucle while
HiloServidor
Es la clase que crearemos para poder gestionar llamadas de forma concurrente
Es parámetro de la instanciación del thread
Recibe como parámetro el MyStreamSocket
Clase HiloServidor
Tiene que tener como atributo un MyStreamSocket y su constructor debe tener ese MyStreamSocketComo parámetro
Lo que se ejecutará de la clase es su método Run()
Tiene que implementar Runnable
Flujo
Se crea un bucle while que terminará cuando acabe la sesión, una forma común de implementarlo es:
boolean finSesion = false;
try {
while (!finSesion) {
// RESTO DE LA IMPL
}
}
Dentro del bucle
Se recoje el parámetro de la petición
Siempre es un string, ya sea un json o una cadena de carácteres separada por algún marcador
String peticion = dataSocket.receiveMessage();
Obtener valores reales de la petición
2 more items...
Métodos a tener en cuenta
String peticion = dataSocket.receiveMessage();
dataSocket.sendMessage(""+resultado)