扭曲的服务器如何检测到不完整的消息
how twisted server detects an incomplete message
我现在正在实施扭曲的客户端和扭曲的服务器。
问题是服务器如何检测客户端发送的消息是否完成?
比如有2个客户端向服务器发送消息,消息是一个python列表,分别只有几个元素。第二个客户端在第一个客户端发送消息后很短的时间发送消息。
由于它是异步的,服务器将切换到为第二个客户端服务,使第一个客户端的消息处理一半。那么我该怎么做才能让服务器知道这条消息是不完整的呢?提前致谢。
您想实现某种 协议 (不要与 twisted.internet.protocol
混淆),它具有某种表示消息开始和结束的定界符,并且您的消息将持续多长时间。例如,让我们定义一个实现以下规则的协议:
- 所有消息都以
{
开头
int
个字节,其中将包含消息正文,后跟 :
- 邮件正文
- 结束标记
}
预期消息示例如下:
{10:Hey Earth!}
Twisted 提供了许多接口来为您完成这项工作,因此您实际上不必自己完成这项工作。有LineReceiver
which combines bytes until a line break. There's the AMP protocol and NetStrings
,和我之前提供的例子类似。
参考文献:
- http://krondo.com/a-poetry-transformation-server/ - 搜索
netstring
你应该找到一个很好的例子,说明如何为自己写一个。
我现在正在实施扭曲的客户端和扭曲的服务器。 问题是服务器如何检测客户端发送的消息是否完成?
比如有2个客户端向服务器发送消息,消息是一个python列表,分别只有几个元素。第二个客户端在第一个客户端发送消息后很短的时间发送消息。
由于它是异步的,服务器将切换到为第二个客户端服务,使第一个客户端的消息处理一半。那么我该怎么做才能让服务器知道这条消息是不完整的呢?提前致谢。
您想实现某种 协议 (不要与 twisted.internet.protocol
混淆),它具有某种表示消息开始和结束的定界符,并且您的消息将持续多长时间。例如,让我们定义一个实现以下规则的协议:
- 所有消息都以
{
开头
int
个字节,其中将包含消息正文,后跟:
- 邮件正文
- 结束标记
}
预期消息示例如下:
{10:Hey Earth!}
Twisted 提供了许多接口来为您完成这项工作,因此您实际上不必自己完成这项工作。有LineReceiver
which combines bytes until a line break. There's the AMP protocol and NetStrings
,和我之前提供的例子类似。
参考文献:
- http://krondo.com/a-poetry-transformation-server/ - 搜索
netstring
你应该找到一个很好的例子,说明如何为自己写一个。