telnet サーバーでホストされている MUD に接続するMUD クライアントアプリケーションを開始しようとしています。私にとって唯一重要なことは、どの OS でも問題なく効率的に動作することです。その要件を除けば、私は実際にどの言語でも販売されているわけではありません。
そこで、アプリケーションのベースとなる、無料で入手できる telnet クライアント ライブラリを探しているので、プロトコルの詳細にあまり対処する必要はありません。
telnet サーバーでホストされている MUD に接続するMUD クライアントアプリケーションを開始しようとしています。私にとって唯一重要なことは、どの OS でも問題なく効率的に動作することです。その要件を除けば、私は実際にどの言語でも販売されているわけではありません。
そこで、アプリケーションのベースとなる、無料で入手できる telnet クライアント ライブラリを探しているので、プロトコルの詳細にあまり対処する必要はありません。
私は常に、この種のもの (Python) に対してTwistedを検討します。
すばらしいのは、後で SSH や telnet よりも安全なものに交換することに決めた場合でも、ほとんど苦労せずにできることです。
ツイスト、ツイスト、ツイスト!
telnet を使用するには、パッケージを参照してくださいtwisted.conch.telnet
。いくつかの質素なAPI ドキュメントがありますが、使用に関する実際の情報は、このgrailmudのナゲット( MUD サーバー) など、Google Code Searchでの検索から得られます。
MUD プログラミングのすべてについて、RFC を使用してゼロから独自のルーチンを作成しました。
私の苦労を少しでも避けたい場合のために、Telnet を適切に処理するかなり単純な C# クラスにまとめました。熟読したい場合は、ここで表示できます。
このコードは、Windows と Linux (Mono を介して) でコピー アンド ペーストされ、いくつかの個別のプロジェクトで実行されており、かなりうまく機能します。
pmc ( http://sourceforge.net/projects/perlmudclient/ ) はまさにこれを行う試みでした。私は先週のいくつかをそれを通して過ごしました。Net::Telnet の古い修正バージョンを使用して接続作業を行います。
私の問題は、Net::Telnet が部分的な行がサーバーによって送信されたとき、つまり行が改行で終わっていないときにブロッキング インターフェイスを持っているように見えることです。これをサポートする 2 つの機能 (waitfor とそのプロンプト メカニズム) があります。これは、ほぼすべてのtelnetサーバーが改行で終了しないプロンプトを備えているためです。
MUD には、多くの場合、非標準の「プロンプト」があり、ゲームの過程で変化します。私が管理している MUD には、ログイン時に "Your choice: " というプロンプトがあり [ユーザー名だけではありません]、多くのゲーム機能で別のプロンプトが表示されます。したがって、クロスプラットフォームの Telnet ライブラリを探しに行くときは、このことを念頭に置いておく必要があると思います。