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.
natalia 054bcd1632
Actualizar 'README.md'
7 months ago
README.md Actualizar 'README.md' 7 months ago

README.md

Diccionario Multilingüe

Proyecto final. Programación de Servicios y procesos.

Natàlia Sepúlveda Ballester

En este ejercicio se pretende crear un diccionario multilingüe en python. Para ello hemos creado un servidor, que tiene un pequeño archivo "diccionario" con las palabras en diferentes que tengo el memoria y de las que puedo obtener la traduccion desde el español. La lista de idiomas, está compuesta por objetos idioma que a su vez tienen listas de palabras y su traducción en la lengua específica.

Un vez el servido está activo, permite que un cliente se pueda conectar, pueda seleccionar el idioma en el que desea recibir las palabras traducidas y puede enviarle las palabras en castellano para que se devuelva la traducción en este idioma.

El código del cliente permite, conectarse a un servidor. En este caso, el servidor tiene un puerto abierto, y cliente debe poner el IP del servidor y el puerto por donde estará operativo, (en mi caso, está puesto localhost, puesto que se ha hecho en un mismo equipo).

El cliente recibirá un print input con las opciones de idiomas que tiene, selecciona uno y luego puede o bien enviar una palabra, que el servidor reconocerá y buscará en su lista de idiomas para devolverla, o bien cambiar el idioma o bien por último, cerrar la conexión enviando un 0.

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

import socket

idiomas = {
    "ingles": {"hola": "hello", "adios": "bye", "buenos dias": "good morning"},
    "frances": {"hola": "bonjour", "adios": "au revoir", "buenos dias": "bonne matinée"},
    "italiano": {"hola": "ciao", "adios": "arrivederci", "buenos dias": "buongiorno"},
    "portugues": {"hola": "olá", "adios": "adeus", "buenos dias": "bom dia"},
    "japones": {"hola": "こんにちは (konnichiwa)", "adios": "さようなら (sayounara)", "buenos dias": "おはようございます (ohayou gozaimasu)"},
    "coreano": {"hola": "안녕하세요 (anneonghaseyo)", "adios": "안녕히 가세요 (annyeonghi kaseyo)", "buenos dias": "좋은 아침이에요 (jonun achimieyo)"}
}

def servidor_udp():
    servidor = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    direccion_servidor = ('', 2000)
    servidor.bind(direccion_servidor)

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

    cliente_conectado = False  

    while True:
        datos, direccion_cliente = servidor.recvfrom(1024)
        palabra, idioma = datos.decode('utf-8').split(',')

        if not cliente_conectado:
            print(f"¡Cliente conectado desde {direccion_cliente}!")
            cliente_conectado = True

        if idioma in idiomas:
            traduccion = idiomas[idioma].get(palabra.lower(), "Error en la respuesta, palabra no encontrada :)")
            respuesta = f"{traduccion}"
        else:
            respuesta = "Error en la respuesta, inserta un idioma válido :)"

        servidor.sendto(respuesta.encode('utf-8'), direccion_cliente)


if __name__ == "__main__":
    servidor_udp()

----------------------CODIGO CLIENTE----------------------------

import socket

def cliente_udp():
    cliente = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    direccion_servidor = ('localhost', 2000)

    idioma_elegido = input("Seleccione el idioma (ingles, frances, italiano, portugues, japones o coreano): ")

    while True:
        opcion = input("Ingrese 'c' para cambiar de idioma, una palabra o '0' para salir: ")

        if opcion == '0':
            break
        elif opcion == 'c':
            idioma_elegido = input("Seleccione el nuevo idioma (ingles, frances, italiano, portugues, japones o coreano): ")
            continue

    
        mensaje = f"{opcion},{idioma_elegido}"
        cliente.sendto(mensaje.encode('utf-8'), direccion_servidor)

        datos, _ = cliente.recvfrom(1024)
        respuesta = datos.decode('utf-8')

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

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

if __name__ == "__main__":
    cliente_udp() 
    

Powered by INFORMATICA.FP.EDU.ES.