在 Python3 中发送服务器套接字 newthread 消息

Posted

技术标签:

【中文标题】在 Python3 中发送服务器套接字 newthread 消息【英文标题】:Send server socket newthread message in Python3 【发布时间】:2021-12-29 05:18:06 【问题描述】:

我尝试在Python3中运行一个接收和发送消息的套接字服务器的示例程序如下:

 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
   

我正在尝试使用此代码将消息发送回客户端:

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

我收到以下错误:

Traceback (most recent call last):
conn.send(newthread.answer())  # echo
TypeError: a bytes-like object is required, not 'str'

我不知道在哪里插入encode('utf-8') 以避免此错误。

【问题讨论】:

【参考方案1】:

我相信这应该可以解决问题

def answer(self):
   return self.m_answer.encode('utf8')

将 self.m_answer 存储为类似对象的字节可能更容易,但在这里转换它应该没问题。

【讨论】:

这似乎行得通! 谢谢!这似乎有效

以上是关于在 Python3 中发送服务器套接字 newthread 消息的主要内容,如果未能解决你的问题,请参考以下文章

python3套接字udp设置接受数据超时

Python 3套接字客户端发送数据和C++套接字服务器接收偏移数据?

iOS 上的 Objective-C 套接字发送和接收

Python3 & 基于TCP的方式实现客户端与服务器端互发消息

如何将数据从 Python 异步套接字服务器发送到子进程?

python3之tcp