¿Enviando un diccionario usando Sockets en Python?

Mi problema: Ok, hice un pequeño programa de chat en el que básicamente uso sockets para enviar mensajes a través de una red.

Funciona muy bien, pero cuando decidí ir un paso más allá, me encontré con un problema.

Decidí agregar algo de cifrado a las cadenas que estaba enviando a través de la red, así que seguí adelante y escribí el script que hacía eso.

El problema es que, aparentemente, no puedes simplemente enviar un diccionario a través de sockets como lo harías con una cadena.

Primero investigué un poco y encontré estas cosas sobre Pickles. Desafortunadamente, no pude descubrir exactamente cómo podría usarlas para convertir cadenas, además de tener que exportar el diccionario a un archivo, pero no puedo hacerlo sin cambiar mi programa.

¿Alguien puede ayudar a explicar cómo debo hacer esto? He mirado por todas partes pero parece que no puedo descubrir cómo.

He subido lo que tengo aquí hasta ahora, si eso le interesa a alguien.

print("\n\t\t Fill out the following fields:")
HOST = input("\nNet Send Server Public IP: ")
PORT = int(input("\nNet Send Server Port: "))
#------------------------------------------------
#Assessing Validity of Connection
#------------------------------------------------
try:
    s = socket(AF_INET,SOCK_STREAM)
    s.connect((HOST,PORT))
    print("Connected to server:",HOST,)
except IOError:
    print("\n\n\a\t\tUndefined Connection Error Encountered")
    input("Press Enter to exit, then restart the script")
    sys.exit()
#-------------------------------------------------
#Now Sending and recieving mesages
#-------------------------------------------------


i = True
while i is True:
    try:
        User_input = input("\n Enter your message: ")
    Lower_Case_Conversion = User_input.lower()
    #Tdirectory just stores the translated letters
    Tdirectory = []
    # x is zero so that it translates the first letter first, evidently
    x = 0
    COUNTLIMIT = len(Lower_Case_Conversion)
    while x < COUNTLIMIT:
        for letter in Lower_Case_Conversion[x]:
            if letter in TRvalues:
                Tdirectory += [TRvalues[Lower_Case_Conversion[x]]]
        x = x + 1

        message = input('Send: ')
        s.send(message.encode())
        print("\n\t\tAwaiting reply from: ",HOST,)
        reply = s.recv(1024)
        print(HOST,"\n : ",reply)
    except IOError:
        print("\n\t\aIOError Detected, connection most likely lost.")
        input("\n\nPress Enter to exit, then restart the script")

Ah, y si te preguntas qué es TRvalues. Es el diccionario que contiene las 'traducciones' para cifrar mensajes simples.

try:
    TRvalues = {}
    with open(r"C:\Users\Owatch\Documents\Python\FunStuff\nsed.txt", newline="") as f:
        reader = csv.reader(f, delimiter=" ")
        TRvalues = dict(reader)

(Las traducciones se guardan en un .txt que importa)

Respuestas a la pregunta(6)

Su respuesta a la pregunta