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.

Enviar mensaje de nuevo hilo de socket de servidor en Python3.

Intenté ejecutar un ejemplo de programa de un servidor de socket que recibe y envía mensajes en Python3 de la siguiente manera:

from threading import Thread
from socketserver import ThreadingMixIn

class ClientThread(Thread):
m_request = “”
m_answer = “”

def init(self,data):
Thread.init(self)
self.m_request =data

def run(self):
global QUIT
try:
self.m_answer = textprotocol.processCommand(self.m_request)
except str:
log.save(“exception %s”%str)

def answer(self):
return self.m_answer

Estoy intentando enviar un mensaje de vuelta al cliente usando este código:

newthread = ClientThread(line)
newthread.start()
while newthread.isAlive():
pass
conn.send(newthread.answer()) # echo
newthread.join()
del newthread
newthread = None

Estoy obteniendo el siguiente error:

none
Traceback (most recent call last):
conn.send(newthread.answer()) # echo
TypeError: se requiere un objeto similar a bytes, no ‘str’

No sé dónde insertar encode(‘utf-8’) para evitar este error.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Necesitas insertar el método encode('utf-8') en la línea de conn.send(). El método conn.send() requiere un objeto similar a bytes, por lo que necesitas codificar el string antes de enviarlo. La línea actualizada debería verse así:

    python
    conn.send(newthread.answer().encode('utf-8')) # eco

Comments are closed.