对于一个典型的客户端-服务器应用程序,它们之间如何不同。具体来说,基于行的协议有什么特殊之处?更好的是,什么时候类必须继承自 Protocol
,什么时候必须继承自 LineReceiver
?
对于一个典型的客户端-服务器应用程序,它们之间如何不同。具体来说,基于行的协议有什么特殊之处?更好的是,什么时候类必须继承自 Protocol
,什么时候必须继承自 LineReceiver
?
差异在于接收数据的处理方式。
协议具有dataReceived函数。每当接收到数据时,它都会被调用。
LineReceiver覆盖了Protocol。它实现了一种基本的消息格式,即使用“\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!
希望这个能对你有所帮助。如果需要更多信息,可以查看参考资料或进行评论提问。
LineReceiver
和Protocol
之间的区别在于前者声明了lineReceived()/sendLine()
方法(以及相关功能),这样你就可以避免在每个协议中重新实现接收/发送行的过程。 - jfs