diff --git a/P6/daytime-tcp-client-L110.c b/P6/daytime-tcp-client-L110.c
new file mode 100644
index 0000000000000000000000000000000000000000..0832147fa88866c2fa23b4af1f6265966ed31950
--- /dev/null
+++ b/P6/daytime-tcp-client-L110.c
@@ -0,0 +1,116 @@
+/**
+ * Practica Tema 6: DAYTIME TCP
+ * Redondo Calleja, Daniel
+ * Jimenez Prieto, Roberto
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+#define MAX_ARGS 4
+#define MAX_BUFFER 1024
+#define DAYTIME_MSG "¿Que dia es hoy?"
+
+int main(int argc, char *argv[]) {
+    int sockfd;
+    struct sockaddr_in server_addr, client_addr;
+    struct servent *service;
+    unsigned short port;
+    char buffer[MAX_BUFFER];
+    
+    // Validar el número de argumentos
+    if (argc != MAX_ARGS - 2 && argc != MAX_ARGS) {
+        fprintf(stderr, "Error, numero incorrecto de argumentos\n");
+        fprintf(stderr, "Uso: %s ip_servidor [-p puerto_servidor]\n", argv[0]);
+        exit(1);
+    }
+
+    // Convertir la IP del servidor a formato de red y asignarla a server_addr
+    if (!inet_aton(argv[1], &server_addr.sin_addr)) {
+        fprintf(stderr, "Error al convertir la IP del servidor.\n");
+        exit(1);
+    }
+
+    // Comprobar si se especifica el puerto
+    if (argc == MAX_ARGS && strcmp(argv[2], "-p") == 0) {
+        // Si se proporciona el puerto, convertirlo a entero
+        port = (unsigned short) atoi(argv[3]);
+        if (port == 0) {
+            fprintf(stderr, "Error: puerto invalido.\n");
+            exit(1);
+        }
+    } else {
+        // Obtener el puerto asociado al servicio DAYTIME usando getservbyname, si no se especifica el puerto
+        service = getservbyname("daytime", "tcp");
+        if (!service) {
+            fprintf(stderr, "Error obteniendo el puerto para DAYTIME con getservbyname.\n");
+            exit(1);
+        }
+        port = service->s_port;
+    }
+
+    // Crear socket TCP
+    sockfd = socket(AF_INET, SOCK_STREAM, 0);
+    if (sockfd < 0) {
+        fprintf(stderr, "Error creando el socket.\n");
+        exit(1);
+    }
+
+    // Configurar la dirección del cliente (local)
+    client_addr.sin_family = AF_INET;
+    client_addr.sin_port = htons(0); 
+    client_addr.sin_addr.s_addr = INADDR_ANY;
+
+    // Asociar el socket a la IP y puerto locales
+    if (bind(sockfd, (struct sockaddr *)&client_addr, sizeof(client_addr)) < 0) {
+        fprintf(stderr, "Error en el bind.\n");
+        close(sockfd);
+        exit(1);
+    }
+
+    // Configurar la dirección del servidor
+    server_addr.sin_family = AF_INET;
+    server_addr.sin_port = htons(port);
+
+    // Establecer la conexión con el servidor
+    if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
+        fprintf(stderr, "Error al conectar con el servidor.\n");
+        close(sockfd);
+        exit(1);
+    }
+
+    // Enviar la cadena "¿Qué día es hoy?" al servidor
+    if (send(sockfd, DAYTIME_MSG, strlen(DAYTIME_MSG), 0) < 0) {
+        fprintf(stderr, "Error enviando el mensaje.\n");
+        close(sockfd);
+        exit(1);
+    }
+
+    printf("Mensaje enviado: \"%s\" a la direccion %s en el puerto %d\n", DAYTIME_MSG, argv[1], port);
+    printf("Esperando respuesta...\n");
+
+    // Esperar la respuesta del servidor
+    ssize_t len = recv(sockfd, buffer, MAX_BUFFER - 1, 0);
+    if (len < 0) {
+        printf("Error recibiendo el mensaje");
+        close(sockfd);
+        exit(1);
+    }
+
+    // Añadir terminador nulo al final de la respuesta
+    buffer[len] = '\0';
+
+    // Mostrar la respuesta por pantalla
+    printf("Respuesta del servidor: %s\n", buffer);
+
+    // Cerrando conexion
+    shutdown(sockfd, SHUT_RDWR);
+    close(sockfd);
+
+    return 0;
+}