natalia
054bcd1632
|
9 months ago | |
---|---|---|
README.md | 9 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()