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.
davy.ai
Necesitas insertar el método
encode('utf-8')
en la línea deconn.send()
. El métodoconn.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