Descargar la presentación
La descarga está en progreso. Por favor, espere
1
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
FUNDAMENTOS DE SOCKETS EN JAVA DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES ALUMNO: FORTINO DOMINGUEZ CONTRERAS
2
SISTEMA OPERATIVO Un sistema operativo es definido como un conjunto de programas especialmente hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora. El sistema operativo administra todos los periféricos de una computadora. El sistema operativo es el programa más importante de la computadora.
3
Fundamentos Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de una red. Un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información. Los sockets utilizan una serie de primitivas para establecer el punto de comunicación. Con todas las primitivas que ofrecen los sockets, se puede crear un sistema de diálogo muy completo.
4
Definición Un socket es un punto final de un proceso de comunicación.
Es una abstracción que permite manejar de una forma sencilla la comunicación entre procesos, aunque estos procesos se encuentren en sistemas distintos, sin necesidad de conocer el funcionamiento de los protocolos de comunicación subyacentes.
5
COMUNICACIÓN ENTRE DOS PROCESOS A TRAVÉS DE SOCKETS
Es así como estos “puntos finales” sirven de enlaces de comunicaciones entre procesos. Los procesos tratan a los sockets como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos transmitiendo y recibiendo a través de sockets. Generalmente son usados en forma de cliente-servidor.
6
Tipos de Sockets El tipo de sockets describe la forma en la que se transfiere información a través de ese socket. Existen muchos tipos de sockets, sin embargo, los más populares son: Stream (TCP) Datagram (UDP) Raw (acceso directo al protocolo: root)
7
Socket Stream El protocolo de comunicaciones con streams es un protocolo orientado a conexión. Los datos llegan al destino en el orden de transmisión. Si se rompe la conexión entre los procesos toma las medidas oportunas. Están libres de errores.
8
Socket Datagram Son un servicio de transporte no orientado a la conexión. Los datos se envían y reciben en paquetes, cuya entrega no está garantizada. Los paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al que se envió. Las comunicaciones a través de datagramas usan UDP (User Datagram Protocol)
9
Socket Raw Son sockets que dan acceso directo a la capa de software de red subyacente o a protocolos de más bajo nivel. Se utilizan sobre todo para la depuración del código de los protocolos.
10
MODELO CLIENTE-SERVIDOR
Un servidor se ejecuta sobre una computadora específica y tiene un socket que responde en un puerto específico. El servidor únicamente espera, escuchando a través del socket a que un cliente haga una petición. El cliente conoce el nombre de host de la máquina en la cual el servidor se encuentra ejecutando y el número de puerto en el cual el servidor está conectado.
11
Funcionamiento de una conexión socket
12
conexion package sockets.conexion; import java.io.DataOutputStream;
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Conexion { private final int PUERTO = 1234; //Puerto para la conexión private final String HOST = "localhost"; //Host para la conexión protected String mensajeServidor; //Mensajes entrantes (recibidos) en el servidor protected ServerSocket ss; //Socket del servidor protected Socket cs; //Socket del cliente protected DataOutputStream salidaServidor, salidaCliente; //Flujo de datos de salida public Conexion(String tipo) throws IOException //Constructor if(tipo.equalsIgnoreCase("servidor")) ss = new ServerSocket(PUERTO);//Se crea el socket para el servidor en puerto 1234 cs = new Socket(); //Socket para el cliente } else cs = new Socket(HOST, PUERTO); //Socket para el cliente en localhost en puerto 1234
13
SERVIDOR package sockets.servidor; import java.io.BufferedReader;
import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import sockets.conexion.Conexion; public class Servidor extends Conexion //Se hereda de conexión para hacer uso de los sockets y demás { public Servidor() throws IOException{super("servidor");} //Se usa el constructor para servidor de Conexion public void startServer()//Método para iniciar el servidor try System.out.println("Esperando..."); //Esperando conexión cs = ss.accept(); //Accept comienza el socket y espera una conexión desde un cliente System.out.println("Cliente en línea"); //Se obtiene el flujo de salida del cliente para enviarle mensajes salidaCliente = new DataOutputStream(cs.getOutputStream()); //Se le envía un mensaje al cliente usando su flujo de salida salidaCliente.writeUTF("Petición recibida y aceptada"); //Se obtiene el flujo entrante desde el cliente BufferedReader entrada = new BufferedReader(new InputStreamReader(cs.getInputStream())); while((mensajeServidor = entrada.readLine()) != null) //Mientras haya mensajes desde el cliente //Se muestra por pantalla el mensaje recibido System.out.println(mensajeServidor); } System.out.println("Fin de la conexión"); ss.close();//Se finaliza la conexión con el cliente catch (Exception e) System.out.println(e.getMessage()); SERVIDOR
14
CLIENTE package sockets.cliente; import java.io.DataOutputStream;
import java.io.IOException; import sockets.conexion.Conexion; public class Cliente extends Conexion { public Cliente() throws IOException{super("cliente");} //Se usa el constructor para cliente de Conexion public void startClient() //Método para iniciar el cliente try //Flujo de datos hacia el servidor salidaServidor = new DataOutputStream(cs.getOutputStream()); //Se enviarán dos mensajes for (int i = 0; i < 2; i++) //Se escribe en el servidor usando su flujo de datos salidaServidor.writeUTF("Este es el mensaje número " + (i+1) + "\n"); } cs.close();//Fin de la conexión catch (Exception e) System.out.println(e.getMessage());
15
MAINSERVIDOR package sockets.main; import java.io.IOException;
import sockets.servidor.Servidor; //Clase principal que hará uso del servidor public class MainServidor { public static void main(String[] args) throws IOException Servidor serv = new Servidor(); //Se crea el servidor System.out.println("Iniciando servidor\n"); serv.startServer(); //Se inicia el servidor }
16
MAINCLIENTE package sockets.main; import java.io.IOException;
import sockets.cliente.Cliente; //Clase principal que hará uso del cliente public class MainCliente { public static void main(String[] args) throws IOException Cliente cli = new Cliente(); //Se crea el cliente System.out.println("Iniciando cliente\n"); cli.startClient(); //Se inicia el cliente }
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.