Python流请求处理器

2 投票
1 回答
3788 浏览
提问于 2025-04-16 22:55

我有一个套接字服务器在运行 StreamRequestHandler 类。问题在于我向套接字写回数据时,客户端似乎没有收到这些数据。

class MyTCPHandler(SocketServer.StreamRequestHandler)
  def handle(self):
    while 1:
      self.data = self.rfile.readline()
      ...process data and pref result...
      self.wfile.write(result)
      break

这看起来很简单,我是不是漏掉了什么?有没有办法清空发送缓冲区,因为我发送的数据量非常少?

1 个回答

2

如果我理解得没错,你遇到的问题是服务器向客户端发送数据时出现了麻烦。我之前也遇到过同样的问题。结果发现,wfilerfile 是 BytesIO 类型,只能处理二进制数据。

所以如果你的 result 是普通字符串,你需要把它转换成二进制格式。

bstring = b"你的字符串"

bstring = bytes("普通字符串", "utf8")

class MyTCPHandler(SocketServer.StreamRequestHandler)
  def handle(self):
    while 1:
      self.data = self.rfile.readline()
      if not self.data:
          break
      self.wfile.write(b"Got some data\n")

撰写回答