You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3 Socket服务端多线程发消息报需字节类对象错误如何解决

问题原因

Python3中socket.send()方法只接受字节类型(bytes)作为入参,你当前newthread.answer()返回的是字符串类型(str),所以触发类型错误。

解决方案

有两个常用的插入encode('utf-8')的位置,选其中一个即可:

方案1:调用send时直接编码(最直观,推荐)

把发送消息的行改成:

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

方案2:修改ClientThread的answer方法返回字节类型

如果你希望这个类统一返回可直接发送的字节格式,修改answer方法:

def answer(self):
    return self.m_answer.encode('utf-8')

补充注意事项

  • 建议加判空逻辑避免m_answer为None时调用encode报错,示例写法:
    res = newthread.answer() or ''
    conn.send(res.encode('utf-8'))
    
  • 你当前用while newthread.isAlive(): pass空循环等线程结束会占用大量CPU,可以直接删掉这行,仅用newthread.join()即可实现等待线程执行结束的效果,代码效率更高。

内容的提问来源于stack exchange,提问作者user2358384

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:54:02