gpt4 book ai didi

python - Twisted Matrix 和 telnet 服务器实现

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:20 27 4
gpt4 key购买 nike

我有一个项目,它本质上是一个游戏服务器,用户可以在其中通过 telnet 连接和发送文本命令。

该代码是用 C 编写的,非常陈旧且非模块化,并且有几个错误和缺失的功能。单独的主要功能是代码的一半。

我得出的结论是,除了其他好处之外,使用 Twisted 用 Python 重写它实际上可以加快完成速度。

那么问题来了:我应该使用哪些包和模块?我在“协议(protocol)”包中看到一个“telnet”模块。我还看到带有“ssh”和另一个“telnet”模块的“cronch”包。

我是 Python 的新手。

最佳答案

Greg 建议在尝试使用 Twisted 之前先熟悉 Python,这也许是一个合理的建议。限制可能的混淆来源可能有助于避免一些非常令人沮丧的情况。

另一方面,我知道很多人将基于 Twisted 的项目作为 Python 的第一个学习经验,并取得了成功。所以这是可能的。你必须先做一些事情。不能保证你选择的东西会比 Twisted 更容易。 :)

就 telnet go 的细节而言,您要使用 twisted.conch.telnet,而不是 twisted.protocols.telnet。前者更新、更好地测试、更有特色,并且有几个示例(尽管遗憾的是除此之外没有很多文档)。

The main telnet example向您展示在使用 twisted.conch.telnet 时可以定义的最有用的事件处理程序。不幸的是,它并没有真正解释他们做什么,也没有展示您可能如何协商选项。如果您已经熟悉 telnet 协议(protocol)本身(主要是它的选项协商部分),那么这对您来说应该很有意义。如果您认为“telnet”只是在两台计算机之间传递人类可读/可写字节的一种方式,那么您之前可能没有遇到过选项协商,它可能没有多大意义。您可以忽略它,也可以查看 the telnet RFC了解更多信息(虽然有点密集)。

要自己进行期权谈判,您至少可以看看 the API documentation对于您在上面的链接示例中看到的 self.transport 对象(这不是常规的 TCP 传输,因为您会发现它在 Twisted 的大部分内容中都使用过,而是一种特殊的 telnet 派生传输,它位于TCP 之上,因此它具有一些额外的功能)。

如果您只是想传递字节,那么您可以专注于 dataReceived 方法和 self.transport.write。当您从对等方接收到字节时,将调用前者;您可以调用后者向您的对等方发送字节。

关于python - Twisted Matrix 和 telnet 服务器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com