跨OS OS Telnet客户端的Telnet lib和语言选择?

问题描述:

我正在寻找启动一个MUD client应用程序,它连接到托管在telnet服务器上的MUD。唯一对我很重要的是它可以在任何操作系统上轻松高效地运行。除了这个要求,我并不是真的以任何语言出售。跨OS OS Telnet客户端的Telnet lib和语言选择?

所以我正在寻找一个可以免费使用的telnet客户端库,我可以在其中为我的应用程序提供基础,因此我不必处理协议的详细信息。

我总是会考虑Twisted这种事情(Python)。

美丽之处在于,如果您以后决定将其交换为SSH或比telnet更安全的任何东西,您都可以轻而易举地完成任务。

+0

我真的找不到任何使用Twisted使用Telnet的好例子,对吗? – Ray 2008-11-26 19:37:01

+0

这就像使用任何其他扭曲的“协议”。你将不得不看例子页面:http:// twistedmatrix。COM /项目/核心/文档/ HOWTO/clients.html。您将使用的协议是twisted.conch.telnet.Telnet(不是EchoProtocol)。 – 2008-11-26 19:43:59

如果你喜欢Perl,在CPAN有一个telnet界面。这很简单,但它应该完成工作。

libcurl也应该能够做telnet,虽然我找不到任何它的例子。

对于我所有的MUD编程,我都是从头开始使用RFC创建自己的例程。

如果你想避免我的一些痛苦,我将它包装成一个相当简单的C#类,它可以正确处理Telnet。如果你想仔细阅读,你可以查看它here

此代码已被复制/粘贴并运行在Windows和Linux上(通过Mono)在几个独立的项目上,并且工作非常好。

扭曲,扭曲,扭曲!

要使用telnet,请参阅包twisted.conch.telnet。它有一些斯巴达API docs,但使用它的真实信息来自searching on Google Code Search,如this nuggetgrailmud - 一个MUD服务器。

pmc(http://sourceforge.net/projects/perlmudclient/)是一个尝试做到这一点。上周我花了一些时间去研究它;它使用Net :: Telnet的较早修改版本来完成其连接工作。

我的问题是,当服务器发送部分行时,Net :: Telnet似乎具有阻止接口,即未被换行符终止的行。它有两个支持此功能的特性(waitfor及其提示机制),因为几乎所有的telnet服务器都有不以换行符终止的提示。

MUD经常有非标准的“提示”,并且在游戏过程中有所不同;我管理的MUD有一个“你的选择:”提示作为它的登录名[它不仅仅是用户名],许多游戏功能提供了替代提示。所以我怀疑你在寻找跨平台的Telnet库时需要记住这一点!

如果你喜欢C,我衷心推荐libtelnet。它将保持一个内部状态,为您执行所有IAC序列解析,并使用Q method处理选项协商。