Skip to content

Latest commit

 

History

History
120 lines (89 loc) · 3.63 KB

6.-crear-un-cliente-morse.md

File metadata and controls

120 lines (89 loc) · 3.63 KB

Crear carpeta para el proyecto

Crear carpeta morse_client.

Clase para codificar y decodificar Morse

Crear archivo morse.py dentro de la carpeta morse_client y pegar el siguiente código.

class Morse:
    def __init__(self):
        self.diccionario_espanol_morse = {
            'A': '.-',     'B': '-...',   'C': '-.-.',
            'D': '-..',    'E': '.',      'F': '..-.',
            'G': '--.',    'H': '....',   'I': '..',
            'J': '.---',   'K': '-.-',    'L': '.-..',
            'M': '--',     'N': '-.',     'O': '---',
            'P': '.--.',   'Q': '--.-',   'R': '.-.',
            'S': '...',    'T': '-',      'U': '..-',
            'V': '...-',   'W': '.--',    'X': '-..-',
            'Y': '-.--',   'Z': '--..',

            '0': '-----',  '1': '.----',  '2': '..---',
            '3': '...--',  '4': '....-',  '5': '.....',
            '6': '-....',  '7': '--...',  '8': '---..',
            '9': '----.',  ' ': 'ESPACIO'
        }

        self.diccionario_morse_espanol = {
            '.-': 'A',    '-...': 'B',   '-.-.': 'C',
            '-..': 'D',   '.': 'E',      '..-.': 'F',
            '--.': 'G',    '....': 'H',   '..': 'I',
            '.---': 'J',   '-.-': 'K',    '.-..': 'L',
            '--': 'M',     '-.': 'N',     '---': 'O',
            '.--.': 'P',   '--.-': 'Q',   '.-.': 'R',
            '...': 'S',    '-': 'T',      '..-': 'U',
            '...-': 'V',   '.--': 'W',    '-..-': 'X',
            '-.--': 'Y',   '--..': 'Z',

            '-----': '0',  '.----': '1',  '..---': '2',
            '...--': '3',  '....-': '4',  '.....': '5',
            '-....': '6',  '--...': '7',  '---..': '8',
            '----.': '9',  'ESPACIO': ' '
        }

    def codificar(self, mensaje):
        mensaje_morse = ''
        for letra in mensaje:
            mensaje_morse += self.diccionario_espanol_morse[letra.upper()] + ' '
        return mensaje_morse[:-1]

    def decodificar(self, mensaje):
        mensaje_espanol = ''
        for morse in mensaje:
            mensaje_espanol += self.diccionario_morse_espanol[morse.upper()]
        return mensaje_espanol

Clase Cliente

Crear archivo cliente.py dentro de la carpeta morse_client y pegar el siguiente código.

import socket
from morse import Morse


class Cliente:

    def ejecutar(self, ip, port, mensaje_original):
        tamano_del_buffer = 1024
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, port))

        maquina_morse = Morse()
        mensaje_en_morse = maquina_morse.codificar(mensaje_original)

        print("Mensaje original '{}'".format(mensaje_original, ip))
        print("Mensaje enviado '{}' a {}".format(mensaje_en_morse, ip))

        s.send(mensaje_en_morse)
        data = s.recv(tamano_del_buffer)
        s.close()

Clase Servidor

Crear archivo servidor.py dentro de la carpeta morse_client y pegar el siguiente código.

import socket
from morse import Morse


class Servidor():

    def ejecutar(self, ip, port):
        tamano_del_buffer = 1024

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind((ip, port))
        s.listen(1)

        conn, addr = s.accept()
        while 1:
            mensaje_en_morse = conn.recv(tamano_del_buffer)

            if not mensaje_en_morse: break
            print("Mensaje recibdo en Morse {}".format(mensaje_en_morse))
            mensaje_en_morse = mensaje_en_morse.split(' ')

            maquina_morse = Morse()
            mensaje_espanol = maquina_morse.decodificar(mensaje_en_morse)
            print("Mensaje decodificado {}".format(mensaje_espanol))
            conn.send("Mensaje recibido!")
        conn.close()