From ebea1dc7196471e5253164c6dab6d3c2bf686d8f Mon Sep 17 00:00:00 2001 From: Ismael Bernad Tello Date: Fri, 12 Jan 2024 09:50:34 +0100 Subject: [PATCH 1/3] Closes #4 metodo admitirComandos --- echo-client.py | 4 ++-- echo-server.py | 53 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 14 deletions(-) mode change 100644 => 100755 echo-client.py mode change 100644 => 100755 echo-server.py diff --git a/echo-client.py b/echo-client.py old mode 100644 new mode 100755 index d0e16ba..98c752a --- a/echo-client.py +++ b/echo-client.py @@ -8,6 +8,6 @@ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(b"Hello, world") - data = s.recv(1024) + # data = s.recv(1024) -print(f"Received {data!r}") +#print(f"Received {data!r}") diff --git a/echo-server.py b/echo-server.py old mode 100644 new mode 100755 index 01a0933..5338658 --- a/echo-server.py +++ b/echo-server.py @@ -2,17 +2,46 @@ import socket -HOST = "127.0.0.1" # Standard loopback interface address (localhost) +HOST = "10.10.0.131" # Standard loopback interface address (localhost) PORT = 65432 # Port to listen on (non-privileged ports are > 1023) -with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - s.bind((HOST, PORT)) - s.listen() - conn, addr = s.accept() - with conn: - print(f"Connected by {addr}") - while True: - data = conn.recv(1024) - if not data: - break - conn.sendall(data) +# Variable que contiene un string, esto se reemplaza por el input del cliente +input_client = "/LIST" + +#Lista de strings con las opciones que se pueden usar como comandos +command_list = ["LIST", "CREATE", "CONNECT", "JOIN", "MSG"] + +def establecerConexion(): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.bind((HOST, PORT)) + s.listen() + conn, addr = s.accept() + with conn: + while True: + print(f"Connected by {addr}") + print("Esperando mensaje") + print("Llamando a la funcion admitirComandos") + admitirComandos(input_client) + print("Llamada terminada") + break; + # if not data: + # break + # conn.sendall(data) + + +#Metodo admitir comandos, +# Ve que el comando empiece por / o // o + y luego compruebe que la cadena de texto sea en mayusculas. +# O que sea en minusculas o mayusculas el metodo establezca todo a mayusculas y sean palabras reservadas +# Comprobar si la variable comienza con "/" y el resto está en mayúsculas y en la lista +def admitirComandos(input_client): + if input_client.startswith("/"): + print("El input empieza por /") + if input_client[1:].isupper() and input_client[1:] in command_list: + print("El input es un comando valido") + #Falta llamar a la funcion correspondiente, por ahora no está implementado porque no sabemos como se van a llamar las funciones + else: + print("El comando no existe o no está escrito correctamente. Recuerda que los comandos son en mayusculas y empiezan por /") + else: + print("El input no incluye un comando (no comienza por /)") + +establecerConexion() #Llamada al metodo establecerConexion From dc2b0d939dbfb87d6790ea6af05a4781d962d192 Mon Sep 17 00:00:00 2001 From: alexa Date: Fri, 12 Jan 2024 10:04:46 +0100 Subject: [PATCH 2/3] Closes #7 conexion entre cliente y servidor --- echo-client.py | 36 ++++++++++++++++++++++++++++++------ echo-server.py | 34 ++++++++++++++++++++++++++++------ 2 files changed, 58 insertions(+), 12 deletions(-) diff --git a/echo-client.py b/echo-client.py index d0e16ba..de76243 100644 --- a/echo-client.py +++ b/echo-client.py @@ -1,13 +1,37 @@ #!/usr/bin/env python3 import socket +import time -HOST = "127.0.0.1" # The server's hostname or IP address -PORT = 65432 # The port used by the server +HOST = "127.0.0.1" +PORT = 65432 +TIEMPO_ESPERA = 60 # segundos with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) - s.sendall(b"Hello, world") - data = s.recv(1024) - -print(f"Received {data!r}") + + # Establecer un tiempo de espera para el cliente + s.settimeout(TIEMPO_ESPERA) + + while True: + try: + # Solicitar al usuario que ingrese un mensaje + message = input("Ingrese un mensaje (o presione Enter para salir): ") + + # Salir del bucle si no se ingresa ningún mensaje + if not message: + break + + # Convertir el mensaje a bytes y enviarlo al servidor + s.sendall(message.encode()) + + # Recibir la respuesta del servidor + data = s.recv(1024) + + # Decodificar y mostrar la respuesta recibida del servidor + response_from_server = data.decode() + print(f"Mensaje recibido del servidor: {response_from_server}") + + except socket.timeout: + print("Tiempo de espera alcanzado. Cerrando conexión.") + break diff --git a/echo-server.py b/echo-server.py index 01a0933..a4ba56a 100644 --- a/echo-server.py +++ b/echo-server.py @@ -1,18 +1,40 @@ #!/usr/bin/env python3 import socket +import time -HOST = "127.0.0.1" # Standard loopback interface address (localhost) -PORT = 65432 # Port to listen on (non-privileged ports are > 1023) +HOST = "127.0.0.1" +PORT = 65432 +TIEMPO_ESPERA = 60 # segundos + +input_client = "" # Inicializar la variable para almacenar el mensaje del cliente with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() conn, addr = s.accept() with conn: - print(f"Connected by {addr}") + print(f"Conectado por {addr}") + + # Establecer un tiempo de espera para el servidor + conn.settimeout(TIEMPO_ESPERA) + while True: - data = conn.recv(1024) - if not data: + try: + data = conn.recv(1024) + if not data: + print("Cliente desconectado") + break + + # Decodificar y guardar el mensaje del cliente + input_client = data.decode() + + # Modificar el mensaje a enviar de vuelta al cliente + response_to_client = f"Mensaje desde el servidor: {input_client}" + + # Enviar de vuelta el mensaje modificado al cliente + conn.sendall(response_to_client.encode()) + + except socket.timeout: + print("Tiempo de espera alcanzado. Cerrando conexión.") break - conn.sendall(data) From 64eb1e5635c191605364b63384e519d77ce48ee5 Mon Sep 17 00:00:00 2001 From: Ismael Bernad Tello Date: Fri, 12 Jan 2024 10:44:44 +0100 Subject: [PATCH 3/3] #4 y #7 Unidos --- echo-client.py | 0 echo-server.py | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) mode change 100644 => 100755 echo-client.py mode change 100644 => 100755 echo-server.py diff --git a/echo-client.py b/echo-client.py old mode 100644 new mode 100755 diff --git a/echo-server.py b/echo-server.py old mode 100644 new mode 100755 index cc05ce9..4058552 --- a/echo-server.py +++ b/echo-server.py @@ -33,12 +33,13 @@ def establecerConexion(): # Decodificar y guardar el mensaje del cliente input_client = data.decode() - + # Modificar el mensaje a enviar de vuelta al cliente response_to_client = f"Mensaje desde el servidor: {input_client}" # Enviar de vuelta el mensaje modificado al cliente conn.sendall(response_to_client.encode()) + admitirComandos(input_client) except socket.timeout: print("Tiempo de espera alcanzado. Cerrando conexión.") @@ -58,8 +59,6 @@ def admitirComandos(input_client): print("El comando no existe o no está escrito correctamente. Recuerda que los comandos son en mayusculas y empiezan por /") else: print("El input no incluye un comando (no comienza por /)") - -establecerConexion() #Llamada al metodo establecerConexion -admitirComandos(input_client) - +#Llamada al metodo establecerConexion +establecerConexion()