Saltar la navegación

2.- Sockets TCP.

Caso práctico

María se encuentra configurando un equipo junto a un armario de comunicaciones.

Juan va a hablar con María para debatir lo aprendido.

Juan: —Hola María, ya lo he entendido. Tenemos dos tipos de conexiones: TCP que son orientadas a conexión y se utilizan para enviar datos de aplicaciones, y UDP que son no orientadas a conexión y se utilizan cuando queremos enviar datos muy rápido pero no nos importa que se pierda algún paquete.

María: —Exacto Juan. Para ponerte un ejemplo, las conexiones TCP se utilizan para enviar ficheros (p.ej. el servicio FTP) y las comunicaciones UDP se utilizan para enviar música y vídeo en tiempo real. Como tenemos claro que la aplicación que vamos a realizar va a utilizar conexiones TCP, ya que no queremos que se pierda ningún dato, a continuación vamos a aprender a programar con java los sockets TCP.

Los sockets permiten la comunicación entre procesos de diferentes equipos de una red. Un socket, es un punto de información por el cual un proceso puede recibir o enviar información.

Tal y como hemos visto anteriormente, existen dos tipos de protocolos de comunicación: TCP o UDP. En el protocolo TCP es un protocolo orientado a la conexión que permite que un flujo de bytes originado en una máquina se entregue sin errores en cualquier máquina destino Por otro lado, el protocolo UDP, no orientado a conexión, se utiliza para comunicaciones donde se prioriza la velocidad sobre la pérdida de paquetes.

A la hora de crear un socket hay que tener claro el tipo de socket que se quiere crear (TCP o UDP). En esta sección vamos a aprender a utilizar los sockets TCP y en el siguiente punto veremos los sockets UDP.

Al utilizar sockets TCP, el servidor utiliza un puerto por el que recibe las diferentes peticiones de los clientes. Normalmente, el puerto del servidor es un puerto bajo [1-1023].

magen que muestra la solicitud de conexión TCP de un cliente.
Socket TCP - Conexión

Cuando el cliente realiza la conexión con el servidor, a partir de ese momento se crea un nuevo socket que será en el encargado de permitir el envío y recepción de datos entre el cliente/servidor. El puerto se crea de forma dinámica y se encuentra en el rango 49152 y 655335. De ésta forma, el puerto por donde se reciben las conexiones de los clientes queda libre y cada comunicación tiene su propio socket.

Imagen que muestra la transferencia de datos entre un cliente y un servidor utilizando sockets.
TCP: transferencia de datos

El paquete java.net de Java proporciona la clase Socket que permite la comunicación por red. De forma adicional, java.net incluye la clase ServerSocket, que permite a un servidor escuchar y recibir las peticiones de los clientes por la red. Y la clase Socket permite a un cliente conectarse a un servidor para enviar y recibir información.

Para saber más

A continuación se estudian las llamadas más importantes de Socket en java. Si deseas complementar dicha información, en el siguiente enlace puedes ver la documentación oficial de Sockets en java.

Sockets en Java.

Autoevaluación

Pregunta 1

Indica si la siguiente información es correcta. Cuando te conectas al puerto 80 TCP, ¿todas las comunicaciones van por ese puerto?