• Document: PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA
  • Size: 613.17 KB
  • Uploaded: 2018-12-07 16:08:48
  • Status: Successfully converted


Some snippets from your converted document:

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA ¿Qué es la arquitectura cliente servidor? La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Es decir, un cliente es el que hace una solicitud de un servicio a un servidor y el servidor es un programa que recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una respuesta. ¿Qué es un socket? Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información. ¿Cómo funciona un socket? El modelo básico de los sockets consta de 2 simples programas, un servidor y un cliente. Básicamente el programa SERVIDOR comienza a escuchar en un puerto determinado (nosotros lo especificamos), y posteriormente el programa CLIENTE debe conocer la IP o nombre de dominio/hostname del servidor y el puerto que está escuchando. El socket sigue normalmente realiza los procesos de Abrir-Leer-Escribir-Cerrar. Antes de que un proceso de usuario pueda realizar operaciones de entrada/salida, debe hacer una llamada a Abrir (open), luego realizar llamadas a Leer (read) y Escribir (write), para la lectura y escritura de los datos y una vez concluido el intercambio de información, el proceso de usuario llamará a Cerrar (close) para informar que ha finalizado. Un proceso tiene un conjunto de descriptores de entrada/salida desde donde leer y por donde escribir. Estos descriptores pueden estar referidos a ficheros, dispositivos, o canales de comunicaciones llamados sockets. El ciclo de vida de un descriptor, aplicado a un canal de comunicación (por ejemplo, un socket), está determinado por tres fases:  Creación, apertura del socket  Lectura y Escritura, recepción y envío de datos por el socket  Destrucción, cierre del socket En un esquema más completo donde se tiene muchos clientes con peticiones a un solo servidor se puede apreciar cómo se realiza la comunicación con el siguiente esquema que se muestra. Ejemplo 1 SALUDO DE BIENVENIDA El siguiente programa establece una conexión básica entre un servidor y un cliente Donde una vez establecida la conexión el servidor solicita el nombre del cliente, el cliente introduce su nombre, y el servidor le da una bienvenida mediante un mensaje. Programa Servidor //Declaramos librerías necesarias import java.io.*; import java.net.*; import java.util.Scanner; public class Servidor { private ServerSocket sServidor; //Socket del servidor private Socket sCliente; //Socket para el cliente private Scanner entrada; //Flujo de Entrada para envio de datos private PrintStream salida; //Flujo de Salida para recepcion de datos private int puerto; // Puerto por el cual escuchara el servidor public Servidor(int p){ puerto=p; } public void iniciar(){ try { //Se Crea el socket del servidor sServidor =new ServerSocket(puerto); System.out.println(" - SERVIDOR INICIADO - "); System.out.println(" - Espèrando Cliente - "); //El metodo accept(), espera hasta que un cliente realice una conexión //Una vez que se ha establecido una conexión por el cliente, este //método devolverá un objeto tipo Socket, a través del cual se establecerá //la comunicación con el cliente sCliente=sServidor.accept(); //Obtengo una referencia a los flujos de datos de entrada y salida del socket cliente entrada =new Scanner(sCliente.getInputStream()); salida =new PrintStream(sCliente.getOutputStream()); ////Esta sección puede ser modificada según nuestros requerimientos////////// System.out.println("Cliente Conectado:"+ sCliente.getInetAddress() +":"+ sCliente.getPort() ); salida.println("EJEMPLO1-Saludo"); salida.print("Ingrese Su Nombre ->"); String nombre= entrada.next(); salida.println("Bienvenido "+ nombre); ///////////////////////////////////////////////////////////////////////////// //Cerramos la conexión finalizar(); } catch(Exception e){ finalizar (); e.printStackTrace(); } } public void finalizar(){ try { entrada.close(); salida.close(); sCliente.close(); sServidor.close(); System.out.print("Conexion Finalizada..."); } catch (IOException e) {

Recently converted files (publicly available):