問題タブ [vt100]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Telnet サーバーはどのようにクライアントと通信しますか?
telnet サーバーに接続してサーバーと通信する C# アプリケーションを作成したいと考えています。telnet サーバーがどのようにクライアントに情報を送信するのか疑問に思っていました。私はTelnet RFCを調べ (すくい取り) 、サーバーから着信するパケットを調べましたが、まだ少し混乱しています。サーバーが telnet クライアントでカーソルを移動する方法と、文字の色を変更する方法の例を誰か教えてもらえますか? (例を挙げていただければ幸いです)
アップデートⅠ
追加の VT100 リソースは次のとおりです。
アップデートⅡ
多くの調査と時間をかけて、ここで私が見つけたもの:C#を使用したTelnetプログラミング
python - ANSI / VT100をサポートするAJAXコンソールウィンドウ?
VT100/ANSIエスケープコードをサポートする「ターミナルウィンドウ」が必要なゲートウェイWebアプリケーションを作成することを計画しています。そのようなタスクのためのAJAXベースの代替手段はありますか?
私はこのようなことを考えています:http://tryruby.hobix.com/
システムに適したバックエンドはPython/Twisted / Pylonsですが、計画しているだけなので、すべてのオプションを検討します。
c# - オープン ソース C# vt100 サーバー
オープンソースの C# vt100 サーバーを知っている人はいますか? vt100 クライアントからのエスケープ シーケンスを理解する C# サーバーを作成しようとしています。
java - テキストベースおよびコンソールベースのフォーム用のJavaフレームワーク?
テキストベース、VT100ベース、またはコンソールベースのフォームシステムを定義および管理するためのJavaベースのフレームワークはありますか?
python - PerlモジュールTerm::VT102に相当するPythonはありますか?
Perlには、非常に便利なモジュール、Term :: VT102があります。これを使用すると、メモリ内に画面を作成できます。これは、画面の一部に対するすべての変更を追跡し、処理のために画面をプレーンテキストとしてエクスポートできるため、スクレイピングの目的で非常に便利です。Pythonに同等のモジュールはありますか?
フォローアップの質問:VT100画面をスクリーンスクレイピングできるPexpectのようなモジュールがありますが、VT100はVT102とどのように異なりますか?
c# - SharpSSH を使用した C# の VT100 エミュレーション ライブラリ
私は Tamir.SharpSsh をいじっていて、それを使用してコンソール SSH クライアントを C# で完全に実装できるかどうかを確認したかったのです。独自の GUI で実際に実行されているパテのようなものではなく、Windows コマンド コンソールから直接実行できるものを意味します。
このライブラリは、端末エミュレーションをまったく処理しないことを除いて、非常に優れています。そのため、SshShell を使用すると、いくつかの基本的な対話を行うことができますが、出力は非常に見苦しく、ランダムな文字でいっぱいになることが多く、シェル スクリプトなどと実際に対話することはできません。
私が知る限り、SharpSSH は単に IO をコンソール IO にリダイレクトします。
これを別の場所にリダイレクトして端末エミュレーションを処理するのはどれほど難しいでしょうか? また、使用できるエミュレーション ライブラリ (できれば C# とオープン ソース) は既にありますか?
編集: SharpSSHをあきらめました。私が思いついた最終的な解決策については、以下の回答を参照してください。
ssh - VT100 SSH セッション ストリームでコンソール プロンプトを検出する
SSH接続を開き、サーバーにコマンドを送信して応答を受信できるようにするために、ラッパーライブラリ(C#で、ただしここではそれほど重要ではありません)に取り組んでいます。ただし、主なことは、コマンド呼び出しで応答ストリームをバッファリングし、シェルがコンソール プロンプトに戻ったら、すべてを 1 つの文字列としてユーザーに返すことです。そうすれば、コマンドを実行するだけで済み、ジョブ中にサーバーがコンソールに書き戻すたびにすべての応答イベントを処理する必要がなくなります。
それで、私の主な質問は、VT100 セッションで、サーバーが入力プロンプトに戻ったことを確実に判断する方法はありますか? これまでに見つけた唯一のことは、私が試した2つのsshサーバー(cygwinとFedora)で、常に出力されるように見える最後の文字シーケンスは '[esc] [0m' [esc]、ASCIIであるということですcode 27 これは標準的なものだと思いたいのですが、そのシーケンスが何であるかを調べたところ、次のことがわかりました。
modeoff SGR0、文字属性をオフにする
「入力を待っています」のような、より具体的な何かを望んでいました:P
これがすべて/ほとんどのシステムで機能するかどうかのアイデアはありますか? または、より良い方法があれば?
.net - Windows WPF または Silverlight での VT100 ターミナル エミュレーション
ターミナル ウィンドウのように動作する WPF または Silverlight アプリを作成することを考えています。ただし、WPF/Silverlight であるため、エフェクトや画像などでターミナル エクスペリエンスを「強化」することができます。
端末をエミュレートする最良の方法を見つけようとしています。VT100エミュレーションの解析などの処理方法は知っていますが、表示方法は?私は、RichTextBox を使用して、基本的に VT100 エスケープ コードを RTF に変換することを検討しました。
私が見ている問題はパフォーマンスです。端末は一度に数文字しか取得できない可能性があり、それらをテキストボックスに読み込めるようにするには、常に TextRanges を作成し、Load() を使用して RTF を読み込みます。また、各ロード「セッション」が完了するためには、RTF を完全に記述している必要があります。たとえば、現在の色が赤の場合、TextBox への読み込みごとに、テキストを赤にするために RTF コードが必要になるか、RTB が赤として読み込まないと仮定します。
これは非常に冗長に思えます。エミュレーションによって構築された結果の RTF ドキュメントは、非常に厄介なものになります。また、キャレットの移動は、RTB によって理想的に処理されるようには見えません。私は何かカスタムが必要だと思いますが、それは私を怖がらせます!
明るいアイデアや既存のソリューションへの指針を聞くことを望んでいます。おそらく、実際の端末を埋め込み、その上に何かをオーバーレイする方法があります。私が見つけた唯一のものは、古い WinForms コントロールです。
更新:以下の私の回答で、提案されたソリューションがパフォーマンスのためにどのように失敗するかを確認してください。:(
Windows WPF または Silverlight での VT100 端末エミュレーション
c - ANSIVT100エスケープシーケンスの標準Cヘッダー
たとえばvt100のansiエスケープシーケンスを含む標準のCヘッダーはありますか?
unix - 端末が C1 制御コードを解釈するかどうかを判断できますか?
ISO/IEC 2022 では、C0 および C1 制御コードが定義されています。C0 セットは、 ASCII、ISO-8859-1、および UTF-8 の間のよく知られたコードです (0x00
例: 、) 。0x1f
ESCCRLF
一部の VT100 端末エミュレータ ( screen(1)
PuTTY など) も C1 セットをサポートしています。これらは と の間の値です0x80
(つまり0x9f
、たとえば、0x84
カーソルを 1 行下に移動します)。
ユーザー提供の入力を表示しています。ユーザー入力で端末の状態を変更できるようにしたくありません (カーソルの移動など)。現在、C0 セットの文字コードを除外しています。ただし、端末がそれらを制御コードとして解釈する場合は、C1セットも条件付きで除外したいと思います。
のようなデータベースからこの情報を取得する方法はありますtermcap
か?