twisted.protocols.basic.LineReceiver和twisted.internet.protocol.Protocol有什么区别?

时间:2013-12-12 17:25:50

标签: python sockets network-programming protocols twisted

对于典型的基于客户端 - 服务器的应用程序,两者如何相互不同。具体来说,基于行的协议有什么特别之处?更好的是,类何时必须从Protocol继承,何时从LineReceiver继承?

1 个答案:

答案 0 :(得分:4)

差异变为接收数据处理。

协议具有dataReceived功能。每当收到数据时都会调用它。

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!

在客户端通过实现LineReceiver收到消息;

def lineReceived(self, line):
   print line
.
.
output: 
Lorem ipsum do amet siempre.
We have Drogba!

我希望它有所帮助。有关详细信息,请查看reference或发表评论。