2008-11-26 98 views
3

我正在尋找啓動一個MUD client應用程序,它連接到託管在telnet服務器上的MUD。唯一對我很重要的是它可以在任何操作系統上輕鬆高效地運行。除了這個要求,我並不是真的以任何語言出售。跨OS OS Telnet客戶端的Telnet lib和語言選擇?

所以我正在尋找一個可以免費使用的telnet客戶端庫,我可以在其中爲我的應用程序提供基礎,因此我不必處理協議的詳細信息。

回答

7

我總是會考慮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

2

如果你喜歡Perl,在CPAN有一個telnet界面。這很簡單,但它應該完成工作。

libcurl也應該能夠做telnet,雖然我找不到任何它的例子。

2

對於我所有的MUD編程,我都是從頭開始使用RFC創建自己的例程。

如果你想避免我的一些痛苦,我將它包裝成一個相當簡單的C#類,它可以正確處理Telnet。如果你想仔細閱讀,你可以查看它here

此代碼已被複制/粘貼並運行在Windows和Linux上(通過Mono)在幾個獨立的項目上,並且工作非常好。

0

pmc(http://sourceforge.net/projects/perlmudclient/)是一個嘗試做到這一點。上週我花了一些時間去研究它;它使用Net :: Telnet的較早修改版本來完成其連接工作。

我的問題是,當服務器發送部分行時,Net :: Telnet似乎具有阻止接口,即未被換行符終止的行。它有兩個支持此功能的特性(waitfor及其提示機制),因爲幾乎所有的telnet服務器都有不以換行符終止的提示。

MUD經常有非標準的「提示」,並且在遊戲過程中有所不同;我管理的MUD有一個「你的選擇:」提示作爲它的登錄名[它不僅僅是用戶名],許多遊戲功能提供了替代提示。所以我懷疑你在尋找跨平臺的Telnet庫時需要記住這一點!

0

如果你喜歡C,我衷心推薦libtelnet。它將保持一個內部狀態,爲您執行所有IAC序列解析,並使用Q method處理選項協商。