You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6 KiB

Alexa_Cliente_Servidor_UDP

------------ CÓDIGO FUENTE PARA EL SERVIDOR --------------


import socket

def servidor_udp():
    #configuramos el socket UDP del servidor que es el que va a recibir los mensajes del cliente
    servidor = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    direccion_servidor = ('', 2000)  
    servidor.bind(direccion_servidor)

    print('El servidor está a la escucha...')

    while True:
        datos, direccion_cliente = servidor.recvfrom(1024)

        # Convertimos los datos a un número
        numero = int(datos.decode('utf-8'))

        #posibles respuestas del servidor para el cliente
        if numero == 1:
            respuesta = "hola"
        elif numero == 2:
            respuesta = "hello"
        elif numero == 3:
            respuesta = "hallo"
        elif numero == 4:
            respuesta ="ciao"    
        else:
            respuesta = "Error en la respuesta, inserta un número válido :)"

        # Enviamos la respuesta al cliente
        servidor.sendto(respuesta.encode('utf-8'), direccion_cliente)

if __name__ == "__main__":
    servidor_udp()

------------ CÓDIGO FUENTE PARA EL CLIENTE --------------


import socket

def cliente_udp():
    #configuramos el socket UDP del cliente que es el que va a enviar los mensajes al servidor
    #ponemos la ip del servidor
    cliente = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    direccion_servidor = ('192.168.50.105', 2000)  # Ajusta esto según la configuración del servidor

    while True:
        # Solicitamos al usuario que ingrese un número, se hará en bucle hasta que ingrese el 0 que termina la conexión
        entrada_usuario = input("Ingresa un número (1, 2, 3 ó 4), ingresa 0 para salir: ")

        # Verificamos si la entrada es un número
        if entrada_usuario.isdigit():
            numero_elegido = int(entrada_usuario)

            # Enviamos el número insertado al servidor
            cliente.sendto(str(numero_elegido).encode('utf-8'), direccion_servidor)

            # Salimos del bucle de insertar un número para obtener respusta si el cliente pulsa 0
            if numero_elegido == 0:
                break

            # Recibimos la respuesta del servidor
            datos, _ = cliente.recvfrom(1024)
            respuesta = datos.decode('utf-8')

            print(f"Respuesta del servidor: {respuesta}")

        else:
            print("Por favor, ingrese un número válido (1, 2 o 3, 4) o 0 para salir.")

    print("Conexión terminada.")
    cliente.close()

if __name__ == "__main__":
    cliente_udp()


Powered by INFORMATICA.FP.EDU.ES.