扭曲的服务器如何检测到不完整的消息

how twisted server detects an incomplete message

我现在正在实施扭曲的客户端和扭曲的服务器。 问题是服务器如何检测客户端发送的消息是否完成?

比如有2个客户端向服务器发送消息,消息是一个python列表,分别只有几个元素。第二个客户端在第一个客户端发送消息后很短的时间发送消息。

由于它是异步的,服务器将切换到为第二个客户端服务,使第一个客户端的消息处理一半。那么我该怎么做才能让服务器知道这条消息是不完整的呢?提前致谢。

您想实现某种 协议 (不要与 twisted.internet.protocol 混淆),它具有某种表示消息开始和结束的定界符,并且您的消息将持续多长时间。例如,让我们定义一个实现以下规则的协议:

  1. 所有消息都以 {
  2. 开头
  3. int 个字节,其中将包含消息正文,后跟 :
  4. 邮件正文
  5. 结束标记}

预期消息示例如下:

{10:Hey Earth!}

Twisted 提供了许多接口来为您完成这项工作,因此您实际上不必自己完成这项工作。有LineReceiver which combines bytes until a line break. There's the AMP protocol and NetStrings,和我之前提供的例子类似。

参考文献: