4.- Programación de comunicaciones en red Flashcards
4.1.- Comunicación entre aplicaciones
Red de ordenadores. Definición
Las redes de ordenadores están formadas por un conjunto de dispositivos que se encuentran conectados entre sí para poder intercambiar información entre ellos.
4.1.- Comunicación entre aplicaciones
Redes de ordenadores. Implementación
Para implementar estas redes, se utilizan unas tecnologías bastante complejas que dividen en capas para simplificar un poco las diferentes funciones que se deben llevar a cabo.
4.1.- Comunicación entre aplicaciones
Redes de ordenadores. Capas
Para implementar estas redes, se utilizan unas tecnologías bastante complejas que dividen en capas para simplificar un poco las diferentes funciones que se deben llevar a cabo. Cada una de estas capas será la encargada de una tarea determinada, poniendo en práctica los diferentes recursos (software y hardware) disponibles
4.1.- Comunicación entre aplicaciones
Modelo TCP/IP. Definicición
A continuación, es posible ver que se presentan unas encima de otras, como si fueran una pila, de tal forma que, cada capa se puede comunicar con las que tiene encima y debajo. En el modelo TCP/IP, se divide la comunicación en cuatro capas.
4.1.- Comunicación entre aplicaciones
Modelo TCP/IP. Capas
En el modelo TCP/IP, se divide la comunicación en cuatro capas.
* Application Layer
* Transport Layer
* Internet Layer
* Physical Network Layer
4.1.- Comunicación entre aplicaciones
Modelo TCP/IP. Capas. Application Layer
Application Layer
* HTTP
* FTP
* DNS
4.1.- Comunicación entre aplicaciones
Modelo TCP/IP. Capas. Transport Layer
Transport Layer
* TCP
* UDP
4.1.- Comunicación entre aplicaciones
Modelo TCP/IP. Capas. Internet Layer
Transport Layer
* IP
4.1.- Comunicación entre aplicaciones
Modelo TCP/IP. Capas. Physical Network Layer
Transport Layer
* Ethernet
* ATM
* DECnet
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes
Cuando una aplicación quiere enviar un mensaje se siguen los siguientes pasos:
1. El emisor envía el mensaje, lo que significa que el mensaje pasa de la capa de aplicación a la capa de transporte.
2. En el nivel de transporte se divide el mensaje en paquetes para realizar el envío y lo pasa a la capa inferior, la capa de Internet.
3. En el nivel de Internet se comprueba el destino de los paquetes y se calcula la ruta que deben seguir; después se envían los paquetes al nivel de red.
4. El nivel de red se encarga de transmitir el paquete al receptor del mensaje.
5. El receptor recibe los paquetes en el nivel de red, en el más bajo, y los envía a la siguiente capa, que se corresponde con el nivel de Internet.
6. El nivel de Internet del receptor es el encargado de comprobar que son correctos. Si es así, los reenvía al nivel de transporte.
7. El nivel de transporte es el encargado de formar el mensaje con los paquetes recibidos y envía el mensaje a la última capa, el nivel de aplicación.
8. El nivel de aplicación recibe el mensaje correctamente.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 1
El emisor envía el mensaje, lo que significa que el mensaje pasa de la capa de aplicación a la capa de transporte.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 2
En el nivel de transporte se divide el mensaje en paquetes para realizar el envío y lo pasa a la capa inferior, la capa de Internet.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 3
En el nivel de Internet se comprueba el destino de los paquetes y se calcula la ruta que deben seguir; después se envían los paquetes al nivel de red.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 4
El nivel de red se encarga de transmitir el paquete al receptor del mensaje.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 5
El receptor recibe los paquetes en el nivel de red, en el más bajo, y los envía a la siguiente capa, que se corresponde con el nivel de Internet.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 6
El nivel de Internet del receptor es el encargado de comprobar que son correctos. Si es así, los reenvía al nivel de transporte.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 7
El nivel de transporte es el encargado de formar el mensaje con los paquetes recibidos y envía el mensaje a la última capa, el nivel de aplicación.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 8
El nivel de aplicación recibe el mensaje correctamente.
4.1.- Comunicación entre aplicaciones
Aplicaciones. Enviar mensajes. Paso 8
El nivel de aplicación recibe el mensaje correctamente.
4.2.- Roles Cliente y Servidor
Modelo cliente-servidor. Definición
El modelo cliente-servidor se basa en una arquitectura
en la que existen distintos recursos, a los que se denomina servidores, y un determinado número de clientes, es decir, de sistemas que requieren de esos recursos. Los servidores, proveem de recursos a los clientes.
4.2.- Roles Cliente y Servidor
Modelo cliente-servidor. Cliente. Definición
Sistemas que requieren de los recursos del servidor y los solicitan a través de peticiones al servidor
4.2.- Roles Cliente y Servidor
Modelo cliente-servidor. Servidor. Definición
Sistemas donde se almacenan los recursos que requieren el cliente y los proveen a través de respuestas al cliente.
4.2.- Roles Cliente y Servidor
Modelo cliente-servidor. En la actualidad
En la actualidad existen distintas aplicaciones que utilizan este modelo, como pueden ser el correo electrónico, mensajería instantánea y el servicio de Internet, es decir, se utiliza siempre que se accede a una página web.
4.2.- Roles Cliente y Servidor
Modelo cliente-servidor. Roles
Se debe tener en cuenta que, en este modelo, no se intercambian los roles entre clientes y servidores.
4.2.- Roles Cliente y Servidor
Modelo cliente-servidor. Sockets
Los sockets también son un ejemplo del modelo cliente-servidor y se estudiarán en este capítulo.
4.3.- Programación de aplicaciones en red. Librerías
Clase InetAddress. Definición
Es la clase que representa las direcciones IP.
4.3.- Programación de aplicaciones en red. Librerías
Clase InetAddress. Funciones
- byte[] getAddress ()
- static InetAddress getLocalHost ()
- static InetAddress getLocalHost(String host)
- String toString ()
4.3.- Programación de aplicaciones en red. Librerías
Clase InetAddress. Funcion byte[] getAddress ()
Devuelve la dirección IP sin procesar como objeto.
4.3.- Programación de aplicaciones en red. Librerías
Clase InetAddress. Funcion static InetAddress getLocalHost ()
Devuelve la dirección IP de la máquina.
4.3.- Programación de aplicaciones en red. Librerías
Clase InetAddress. Funcion static InetAddress getLocalHost (String host)
Devuelve la dirección IP de la máquina especificada.
4.3.- Programación de aplicaciones en red. Librerías
Clase InetAddress. Funcion String toString ()
Convierte la dirección IP en una cadena.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Definición
Es la clase que representa un localizador de recursos uniforme (URL), es decir, representa la dirección del recurso en Internet.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. URL. Definición
Una URL es un conjunto de caracteres que permiten denominar de forma única los recursos en Internet, de esta forma facilita el acceso a ellos.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. URL. Formato
El formato de una URL es el siguiente: protocolo://máquina:puerto/ruta_fichero
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. URL. Usuario y contraseña
Si es necesario la identificación para acceder a ese recurso, el usuario y contraseña se deben indicar delante de la máquina, de forma que la URL quedaría: protocolo:/usuario:contraseña@máquina:puerto/ruta_fichero
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Constructores
Existen diferentes constructores
Existen distintas formas de crear un objeto de esta clase, dependiendo de los parámetros de los que se disponga. Por ello, existen diferentes constructores:
* URL (String url)
* URL (String protocol, String host, int port, String file)
* URL (String protocol, String host, String file)
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Constructores. URL (String url)
Existen diferentes constructores
Crea un objeto URL de la cadena recibida.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Constructores. URL (String protocol, String host, int port, String file)
Existen diferentes constructores
Crea un objeto URL con los datos recibidos.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Constructores. URL (String protocol, String host, String file)
Existen diferentes constructores
Crea un objeto URL con los datos recibidos.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones
Existen diferentes constructores
- String getFile ()
- String getHost ()
- String getPath ()
- int getPort ()
- String getProtocol ()
- URI toURI ()
- URLConnection openConnection ()
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. String getFile ()
Existen diferentes constructores
Devuelve el nombre del archivo.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. String getHost ()
Existen diferentes constructores
Devuelve el nombre de la máquina.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. String String getPath ()
Existen diferentes constructores
Devuelve el nombre de la ruta de acceso.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. int getPort ()
Existen diferentes constructores
Devuelve el puerto que ocupa.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. String getProtocol ()
Existen diferentes constructores
Devuelve el protocolo.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. URI toURI ()
Existen diferentes constructores
Devuelve el URI equivalente a esta URL.
4.3.- Programación de aplicaciones en red. Librerías
Clase URL. Funciones. URLConnection openConnection ()
Existen diferentes constructores
Crea y devuelve una conexión al objeto
remoto de esta URL.
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Definición
Esta clase permite trabajar con conexiones realizadas a la URL especificada.
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Objeto URL. Función openConnection ()
Ccrear un objeto de la clase URL e invocar al método openConnection().
- URL url = new URL (“https://www.ilerna.es/
ca/fp-a-distancia”); - URLConnection urlCon = url.openConnection();
Con esto obtenemos una conexión al objeto URL referenciado. Las instancias se esta clase se pueden utilizar tanto para leer como para escribir al recurso referenciado por la URL.
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Funciones
- abstract void connect ()
- InputStream getInputStream ()
- OutputStream getOutourStream ()
- URL getURL()
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Funciones. abstract void connect ()
Establece la conexión con el recurso de la URL. Una vez que se obtiene la conexión se pueden leer y escribir datos en dicha conexión.
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Funciones. InputStream getInputStream ()
Devuelve un flujo de entrada para leer los
datos del recurso.
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Funciones. OutputStream getOutourStream ()
Devuelve un flujo de salida para escribir datos en el recurso.
4.3.- Programación de aplicaciones en red. Librerías
Clase URLConnection. Funciones. URL getURL()
Devuelve la URL de la conexión.
4.4.- Sockets
Socket. Definición
Un socket es un mecanismo que permite la comunicación entre aplicaciones a través de la red, es decir, abstrae al usuario del paso de la información entre las distintas capas. Su función principal es crear un canal de comunicación entre las aplicaciones y simplificar el intercambio de mensajes.
4.4.- Sockets
Sockets. Abstracción
Abstrae al usuario del paso de la información entre las distintas capas. Su función principal es crear un canal de comunicación entre las aplicaciones y simplificar el intercambio de mensajes.
4.4.- Sockets
Sockets. Componentes
Un socket se define mediante la dirección IP de los dos dispositivos, el protocolo de transporte, y, por último, el puerto de cada uno de los dispositivos por el que se conectan.
4.4.- Sockets
Sockets. Puerto. Definición
Un puerto es el identificador que permite la comunicación entre los dispositivos de una red. Una máquina solo puede tener un único puerto asignado.
4.4.- Sockets
Sockets. Servidor
La máquina denominada servidor tiene un puerto asignado, que es el encargado de quedarse a la espera de que algún cliente realice cualquier petición.
4.4.- Sockets
Sockets. Cliente
Para que un cliente pueda comunicarse con un servidor, debe conocer su dirección IP y el puerto asignado, y realizar la petición.
4.4.- Sockets
Sockets. Servidor. Respuesta
Cuando el servidor recibe la petición, si decide aceptarla, asigna el puerto para la comunicación, de forma que el socket conocido por el cliente queda libre para recibir a nuevos clientes.
4.4.- Sockets
Sockets. Cliente. Petición
Como la petición la realiza desde el puerto del cliente, el servidor ya conoce su puerto, y es el cliente el que aceptará la conexión, y después, asignará el puerto para el envío de mensajes.
4.4.- Sockets
Sockets. Tipos
Existen dos tipos de sockets
Existen dos tipos de sockets:
* Sockets orientados a conexión
* Sockets no orientados a conexión.
4.4.- Sockets
Sockets orientados a conexión. Protocolo TCP. Definición
Este tipo de sockets utilizan el protocolo TCP. Se utilizan para aquellas aplicaciones que requieren una alta fiabilidad en el envío de mensajes, puesto que, mediante este protocolo, aseguran la entrega de todos y cada uno de los paquetes, en el mismo orden en el que fueron enviados.
4.4.- Sockets
Sockets orientados a conexión. Protocolo TCP. Verificacion
Para ello, se utiliza una verificación de los paquetes en el receptor, enviando un acuse de recibo. Si el emisor del mensaje no lo recibe, se procederá entonces al reenvío del paquete.
4.4.- Sockets
Sockets orientados a conexión. Establecimiento de conexión
Otra de las principales características de este tipo de sockets es el establecimiento de la conexión. Para realizarla es necesario el envío de varios mensajes antes de comenzar el intercambio de mensajes
4.4.- Sockets
Sockets orientados a conexión. Pre-envio de mensajes del cliente
- Petición del cliente de establecer conexión (SYN).
- Confirmación (ACK) por parte del servidor para establecer la conexión (SYN).
- Confirmación de cliente del mensaje anterior (ACK).
Una vez que estos tres mensajes han sido enviados, es posible empezar a enviar mensajes entre los dispositivos.
4.4.- Sockets
Sockets orientados a conexión. Finalización de conexión
Existen dos tipos de sockets
Cuando termina el envío de mensajes, el cliente es el que decide cerrar la conexión, para ello existen otro tipo de mensajes
4.4.- Sockets
Sockets orientados a conexión. Post-envio de mensajes del cliente
- El cliente envía el mensaje para cerrar la conexión (FIN).
- El servidor confirma el cierre de conexión (ACK).
- El servidor envía el cierre de la conexión (la otra vía) (FIN).
- El cliente confirma el cierre de conexión (ACK)
4.4.- Sockets
Sockets orientados a conexión. Servicios
Los sockets orientados a conexión se utilizan en distintos servicios como, por ejemplo, FTP, Telnet, HTTP y SMTP.
4.4.- Sockets
Sockets orientados a conexión. Servicios
Los sockets orientados a conexión se utilizan en distintos servicios como, por ejemplo, FTP, Telnet, HTTP y SMTP.
4.4.- Sockets
Sockets no orientados a conexión. Protocolo UDP. Definición
Este tipo de sockets utilizan el protocolo UDP
4.4.- Sockets
Sockets no orientados a conexión. Protocolo UDP. Verificación
Al contrario que los anteriores, este tipo de sockets no garantizan que los mensajes enviados lleguen a su destino, por lo que no es un protocolo fiable. Además, tampoco garantizan que los paquetes vayan a llegar en el orden enviado
4.4.- Sockets
Sockets no orientados a conexión. Conexión y mensajes
A cambio de esto, ofrecen una mayor velocidad en el intercambio de los mensajes, puesto que no tienen que establecer conexión para ello, ni controlar los mensajes que han llegado.
4.4.- Sockets
Sockets no orientados a conexión. Servicios
Los sockets no orientados a conexión también son utilizados en los servicios. En este caso son utilizados por SNTP, DNS y NFS
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos
En la capa de transporte hay que destacar dos protocolos,TCP y UDP, que son muy importantes en la comunicaciónen red.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias
- Conexión
- Función
- Uso
- Uso por otros protocolos
- Ordenar por paquetes de data
- Velocidad de transferencia
- Confiabilidad
- Tamaño de título
- Campos comunes de títulos
- Fluidez
- Peso
- Control de flujo de data
- Verificación de errores
- Campos
- Reconocimiento
- Handshake (verifica conexiones en tres tiempos)
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Conexión
- TCP: Protocolo orientado a conexiones.
- UDP: Protocolo sin conexiones.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Función
- TCP: Se usa para enviar mensajes por Internet de una computadora a otra, mediante conexiones virtuales.
- UDP: Se usa para transporte de mensajes y/o transferencias. Al no estar basada en conexiones, un programa puede enviar una carga de paquetes y recibirse en el destino.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Uso
- TCP: Aplicaciones que requieren confiablidad alta y donde el tiempo de transmisión es menos crítico.
- UDP: Aplicaciones que necesitan transmisión rápida y efectiva. Servidores que reciben una gran cantidad de peticiones pequeñas de un alto número de clientes.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Uso por otros protocolos
- TCP: HTTP, HTTPS, SMTP, Telnet.
- UDP: DNS, DHCP, TFTP, SNMP, RIP, VoIP.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Ordenar por paquetes de data
- TCP: Orden especificado.
- UDP: No tienen orden inherente. Los paquetes son independientes unos de los otros. Si requieren un orden, esto se maneja a nivel de aplicación.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Velocidad de transferencia
- TCP: Más lento.
- UDP: No hace falta verificación de errores por paquete, por lo que su velocidad es mayor.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Confiabilidad
- TCP: Ofrece una garantía absoluta de que los datos llegarán en el mismo orden en que se enviaron.
- UDP: No hay garantía de que los paquetes de datos lleguen.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Tamaño del título
- TCP: 20 bits.
- UDP: 8 bits
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Campos comunes de títulos
- TCP/UCP: Puerto de origen, puerto de destino, checksum.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Fluidez
- TCP: Los datos se leen como una secuencia de bits y no se transmiten indicadores para los límites desegmentos de los mensajes.
- UDP: Los paquetes son enviados individualmente; se verifica su integridad solo si llegan. Los paquetes tienen límites definidos, que comprueban que el mensaje está completo.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Peso
- TCP: TCP es pesado. Requiere tres paquetes para establecer una conexión antes de transmitir. TCP maneja confiabilidad y control de congestión.
- UDP: UDP es liviano. No hay ordenamiento de mensajes ni conexiones de verificación.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Control de flujo de data
- TCP: Sí realiza control de flujo. Requiere tres paquetes para establecer una conexión antes de transmitir. Maneja confiabilidad y control de congestión.
- UDP: No se realiza control de flujo.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Verificación de errores
- TCP: Sí hay verificación de errores.
- UDP: Sí hay verificación de errores, pero no tiene opciones para recuperar los datos perdidos.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Campos
- TCP: Número de secuencia, Número de ACK, Índice data, Reservado, Bit de control, Ventana, Indicador de urgencia, Opciones, Relleno, CheckSum, Puerto de origen, Puerto de destino.
- UDP: Largo, Puerto de origen, Puerto de destino, CheckSum.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Reconocimiento
- TCP: Hay segmentos de reconocimiento.
- UDP: No hace reconocimiento.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Handshake (verifica conexiones en tres tiempos)
- TCP: SYN, SYN-ACK, ACK.
- UDP: No hace esta verificación.
4.5.- Sockets para transmisión y recepción de información
Capa de transporte. Protocolos. Diferencias. Checksum
- TCP: Completo.
- UDP: Solo para detectar errores.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase ServerSocket. Definición
Es la clase que se debe instanciar en la parte del servidor para crear el puerto que se queda esperando a la conexión por parte de los clientes.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase ServerSocket. Constructores
Existen distintos constructores
Existen distintos constructores:
* ServerSocket ()
* ServerSocket (int port)
* ServerSocket (int port, int baklog)
* ServerSocket (int port, int baklog, InetAdress dirección)
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase ServerSocket. Constructores. ServerSocket ()
Crea un socket no enlazado.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase ServerSocket. Constructores. ServerSocket (int port)
Crea un socket enlazado al puerto especificado.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase ServerSocket. Constructores. ServerSocket (int port, int baklog)
Crea un socket enlazado al puerto especificado, indicando el número máximo de peticiones que pueden estar en cola.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase ServerSocket. Constructores. ServerSocket (int port, int baklog, InetAdress dirección)
Crea un socket enlazado al puerto especificado y a una dirección IP, indicando el número máximo de peticiones que pueden estar en cola.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase Socket. Definición
Es la clase que se debe instanciar en la parte del cliente.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase Socket. Constructores
Existen distintos constructores
Existen distintos constructores:
* Socket ()
* Socket (InetAddress address, int port)
* Socket (InetAddress address, int port, InetAddress localAddr, int localPort)
* Socket (String host, int port)
* Socket (String host, int port, InetAddress localAddr, int localPort)
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase Socket. Constructores. Socket ()
Crea un socket no conectado.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase Socket. Constructores. Socket (InetAddress address, int port)
Crea un socket conectado al puerto indicado en la dirección IP especificada.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase Socket. Constructores. Socket (String host, int port)
Crea un socket y lo conecta al puerto especificado en el host.
4.6.- Creación de Sockets
Sockets orientados a conexión. Clase Socket. Constructores. Socket (String host, int port, InetAddress localAddr, int localPort)
Crea un socket y lo conecta al host remoto especificado en el puerto especificado.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramSocket. Definición
Es la clase que se debe instanciar tanto en la parte del cliente como en el servidor.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramSocket. Constructores
Existen distintos constructores:
Existen distintos constructores:
* DatagramSocket ()
* DatagramSocket (int port)
* DatagramSocket (int port, InnetAddress Iaddr)
* DatagramSocket (SocketAddress bindaddr)
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramSocket. Constructores. DatagramSocket ()
Crea un socket UDP y lo conecta a cualquier puerto disponible de la máquina host remota.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramSocket. Constructores. DatagramSocket (int port)
Crea un socket UDP y lo conecta con el puerto especificado.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramSocket. Constructores. DatagramSocket (int port, InnetAddress Iaddr)
Crea un socket UDP y lo conecta a la dirección local especificada.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramSocket. Constructores. DatagramSocket
(SocketAddress bindaddr)
Crea un socket UDP y lo conecta a la dirección de socket local especificada.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramPacket. Definición
Es la clase que permite crear paquetes para enviarlos a través del socket UDP.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramPacket. Constructores
Existen distintos constructores:
Existen distintos constructores:
* DatagramPacket (byte [] buf, int longitud)
* DatagramPacket (byte [] buf, int longitud, InetAddress address, int port)
* DatagramPacket (byte [] buf, int offset, int longitud)
* DatagramPacket (byte [] buf, int longitud, SocketAddress address)
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramPacket. Constructores. DatagramPacket (byte [] buf, int longitud)
Crea un datagrama que recibe paquetes de la longitud especificada.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramPacket. Constructores. DatagramPacket (byte [] buf, int longitud, InetAddress address, int port)
Crea un datagrama que envía paquetes de la longitud especificada al puerto especificado,
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramPacket. Constructores. DatagramPacket (byte [] buf, int offset, int longitud)
Crea un datagrama que recibe paquetes de la longitud especificada del puerto especificado.
4.6.- Creación de Sockets
Sockets no orientados a conexión. Clase DatagramPacket. Constructores. DatagramPacket (byte [] buf, int longitud, SocketAddress address)
Crea un datagrama que envía paquetes de la longitud especificada al host especificado.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase ServerSocket. Funciones
Algunos de sus métodos más importantes
Algunos de sus métodos más importantes:
* Socket accept ()
* void bind (SocketAddress endpoint)
* void close ()
* InetAddress getInetAddress ()
* int getPort ()
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase ServerSocket. Funciones. Socket accept ()
Acepta una petición de conexión por parte del cliente.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase ServerSocket. Funciones. void bind (SocketAddress endpoint)
Vincula el socket a una dirección IP y a un puerto determinado.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase ServerSocket. Funciones. void close ()
Cierra el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase ServerSocket. Funciones. InetAddress getInetAddress ()
Devuelve la dirección local del socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase ServerSocket. Funciones. int getPort ()
Devuelve el puerto del socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones
Algunos de sus métodos más importantes
Algunos de sus métodos más importantes:
* void bind (SocketAddress endpoint)
* void close ()
* void connect (SocketAddress endpoint)
* InputStream getInputStream ()
* InetAddress getLocalAddress ()
* int getLocalPort ()
* OutputStream getOutputStream ()
* int getPort ()
* boolean isClosed ()
* boolean isConnected ()
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. void bind (SocketAddress endpoint)
Vincula el socket a una dirección local.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. void close ()
Cierra el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. void connect (SocketAddress endpoint)
Conecta el socket con el servidor.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. InputStream getInputStream ()
Devuelve el flujo de entrada para el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. InputStream InetAddress getLocalAddress ()
Devuelve la dirección a la que está conectado el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. int getLocalPort ()
Devuelve el número de puerto local al está vinculado el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. OutputStream getOutputStream ()
Devuelve el flujo de salida para el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. int getPort ()
Devuelve el número de puerto remoto al que está conectado el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. boolean isClosed ()
Comprueba si está cerrado el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase Socket. Funciones. boolean isConnected ()
Comprueba si está conectado el socket.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones
Algunos de sus métodos más importantes
Algunos de sus métodos más importantes:
* InetAddress getAddress ()
* byte [] getData ()
* int getLength ()
* int getPort ()
* void setAddress (InetAddres address)
* void setData (byte [] data)
* void setLength (int longitud)
* void setPort (int port)
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. InetAddress getAddress ()
Devuelve la dirección IP de la máquina con la que se ha realizado una transmisión de paquetes.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. byte [] getData ()
Devuelve el búfer de datos.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. int getLength ()
Devuelve la longitud de los datos.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. int getPort ()
Devuelve el puerto del host remoto con el que se ha realizado una transmisión de paquetes.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. void setAddress (InetAddres address)
Establece la dirección IP de la máquina a la que se envía este datagrama.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. void setData (byte [] data)
Establece el búfer de datos para un paquete.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. void setLength (int longitud)
Establece la longitud del paquete.
4.7.- Enlazamiento y establecimiento de conexiones
Sockets orientados a conexión. Clase DatagramSocket. Funciones. void setPort (int port)
Establece el puerto del host remoto al que se envía el datagrama.
4.8.- Programación de Cliente y Servidor
Socket TCP. Creación. Servidor
Cuando se crea un socket en el servidor, se queda esperando a que los clientes se conecten. Esto se realiza mediante la función accept( )
4.8.- Programación de Cliente y Servidor
Socket TCP. Creación. Cliente
Cuando se crea un socket en el cliente, indicando el puerto y la dirección del socket servidor, se realiza la conexión entre el cliente y el servidor.
4.8.- Programación de Cliente y Servidor
Socket TCP. Transmisión. Funciones
Una vez que existe conexión, comienza la transmisión de los datos, mediante funciones de write y read.
4.8.- Programación de Cliente y Servidor
Socket TCP. Transmisión. Clases
Estas operaciones se realizan mediante las clases DataInputStream y DataOutputStream, que permiten utilizar diversos métodos de lectura y de escritura.
4.8.- Programación de Cliente y Servidor
Socket TCP. Finalización
Cuando se termina la transmisión de los datos, se cierra la conexión, y también el socket del cliente. Después, cuando el servidor acaba su función, también se cierra.
4.8.- Programación de Cliente y Servidor
Socket UDP. Creación. Servidor
Se crea un socket en el servidor que se queda a la espera de peticiones de clientes.
4.8.- Programación de Cliente y Servidor
Socket UDP. Creación. Cliente
Cuando se crea un socket en el cliente, se conecta al socket del servidor.
4.8.- Programación de Cliente y Servidor
Socket UDP. Creación. Transmisión
Una vez realizada la conexión se envían los distintos datagramas mediante los métodos send y receive.
4.8.- Programación de Cliente y Servidor
Socket UDP. Creación. Finalización
Cuando se termina la transmisión de los datos, se cierra el socket del cliente. El servidor se puede quedar a la espera de otros clientes, pero cuando el servidor termina su función, también hay que cerrar su socket.
4.9.- Hilos en programación de aplicaciones en red
Sockets. Simultaneidad. Problema
Mediante los sockets creados hasta ahora, el servidor
únicamente es capaz de trabajar con un cliente simultáneamente,
4.9.- Hilos en programación de aplicaciones en red
Sockets. Simultaneidad. Solución
La solución para esto pasa por la creación de hilos para contestar a cada cliente. Es decir, cuando se crea el socket del servidor y se queda esperando clientes y recibe la petición de un cliente, debe crear un hilo con el resto del funcionamiento del servidor. De esta forma, el servidor podrá atender a todos los clientes que realicen la petición.