Python twisted中的协议分层
我几乎明白了--但我遗漏了关键点 我试图弄清楚人们如何在Twisted中构建“分层”协议栈。我可以理解一个人是如何附加一个协议并延迟处理事件的,但是如果我想使用传统的OSI层模型?假设我在TCP连接器的底部有一个面向行的协议,并且我希望在到达应用程序空间之前在顶部堆叠多个面向行的协议 (想想我想在twisted中实现TCP/IP堆栈本身)OSI分层模型与twisted基本无关(而且,我认为,通常与软件无关)。一次查看每一层:Python twisted中的协议分层,python,protocols,twisted,Python,Protocols,Twisted,我几乎明白了--但我遗漏了关键点 我试图弄清楚人们如何在Twisted中构建“分层”协议栈。我可以理解一个人是如何附加一个协议并延迟处理事件的,但是如果我想使用传统的OSI层模型?假设我在TCP连接器的底部有一个面向行的协议,并且我希望在到达应用程序空间之前在顶部堆叠多个面向行的协议 (想想我想在twisted中实现TCP/IP堆栈本身)OSI分层模型与twisted基本无关(而且,我认为,通常与软件无关)。一次查看每一层: 物理:显然,Twisted不是以太网电缆或物理交换机,所以它不能这样做
dataReceived
将字节从传输传送到IProtocol
,应用程序通过ITransport.write()
将字节传送到传输。(然后在导线的另一端反转此关系。)dataReceived
委托给一个新方法,该方法特定于您的分层习惯用法,例如lineReceived
,然后让下一层的子类
如果您确实想要使用Twisted的TCP实现
如果你想看到一个接口的提案,它将改进Twisted本身的分层。OSI分层模型主要与Twisted无关(而且,我认为,通常与软件无关)。一次查看每一层:
dataReceived
将字节从传输传送到IProtocol
,应用程序通过ITransport.write()
将字节传送到传输。(然后在导线的另一端反转此关系。)dataReceived
委托给一个新方法,该方法特定于您的分层习惯用法,例如lineReceived
,然后让下一层的子类
如果您确实想要使用Twisted的TCP实现
如果您想看到一个接口提案,它将改进Twisted本身的分层功能。我认为正式的、有文档记录的、广泛使用的协议和传输接口最好用“即席”来描述,不管您多么喜欢它。:)
dataReceived
→ <代码>stringReceived或dataReceived
→ lineReceived
是特别的。好的,更新了答案来描述协议/传输分层的非特别接口。我不认为正式的、有文档记录的、广泛使用的协议和传输接口最好描述为“特别的”,不管你有多喜欢它。:)dataReceived
→ <代码>stringReceived或dataReceived
→ lineReceived
是特殊的。好的,更新了答案,以描述协议/传输分层的非特殊接口。