我差不多了 - 但我缺少关键点......
我试图找出如何在Twisted中构建“分层”协议栈。我可以理解一个人如何附加单个协议并使用Defers处理事件,但是如果我想要传统的OSI图层模型呢?假设我在TCP连接器的底部有一个面向行的协议,我希望将多个面向行的协议堆叠在顶部,直到我到达应用程序空间。
(想想我想用扭曲的方式实现TCP / IP堆栈)
答案 0 :(得分:0)
OSI分层模型主要与Twisted无关(而且,我认为,通常与软件无关)。一次查看每一层:
IProtocol
和ITransport
。传输通过IProtocol
将传输中的字节传递到dataReceived
,并且应用程序通过ITransport.write()
将字节传递到传输。 (然后在导线的另一端反转这种关系。)然而,协议内分层在某种程度上更具临时性。现在通常的惯用法是简单地将Protocol子类化,然后从dataReceived
委托给一个特定于你的分层习语的新方法,比如lineReceived
,然后有下一层的子类。
如果您确实需要使用Twisted的TCP实现,look here。
如果您想查看可以改善Twisted内部分层的接口提案,请转而使用see here。