对于一个典型的基于客户机-服务器的应用程序,这两者之间有什么不同。具体来说,基于线路的协议有什么特殊之处?更好的是,类何时必须从Protocol继承,何时必须从LineReceiver继承?

最佳答案

差异是由接收到的数据处理造成的。
协议具有数据接收功能。它将在接收到数据时调用。
LineReceiver重写协议。它实现了一种基本的消息格式,消息用'\r\n'分隔。
假设服务器写的消息如下:;

request.write("Lorem ipsum")
request.write("do amet siempre.\r\n")
request.write("We have Drogba!\r\n")

在客户端接收到带有实现协议的消息;
def dataReceived(self, data):
   print data
.
.
output:

Lorem ipsum
do amet siempre.
We have Drogba!

在客户端接收到带有implements LineReceiver的消息;
def lineReceived(self, line):
   print line
.
.
output:
Lorem ipsum do amet siempre.
We have Drogba!

我希望这会有帮助。有关更多信息,您可以查看reference或发表评论。

07-26 00:48