es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El error “TypeError: se requiere un objeto similar a bytes, no ‘str'” aparece, pero ¿por qué?

Quiero crear una comunicación de socket, pero aparece un error si ejecuto el siguiente script: TypeError: se requiere un objeto similar a bytes, no 'str'

import socket
import time
UDP_IP = "192.168.1.169"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
while True:
    v = input("Mensaje:      ")
    MESSAGE = str(v)
    sock.sendto(MESSAGE.encode(), (UDP_IP, UDP_PORT))

El error es el siguiente:
none
Traceback (most recent call last):
File "/home/pi/Desktop/snd.py", line 12, in <module>
sock.sendto(MESSAGE.encode(),(UDP_IP, UDP_PORT))
TypeError: se requiere un objeto similar a bytes, no 'str'

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque al enviar datos a través de sockets, estos deben estar en formato de bytes en lugar de formato de cadenas de caracteres. Para solucionar este error, necesitas codificar tu mensaje de cadena de caracteres en bytes usando el método encode(). Aquí te mostramos cómo puedes modificar tu código para solucionar el error:

    import socket
    import time
    
    UDP_IP = "192.168.1.169"
    UDP_PORT = 5005
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    while True:
        v = input("Mensaje: ")
        MESSAGE = str(v).encode()  # codificar el mensaje en bytes
        sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
    

    Al llamar al método encode() en el mensaje de cadena de caracteres, lo convertimos en un objeto similar a bytes que puede ser enviado a través del socket sin ningún error.

Comments are closed.