2012-03-22 12 views
1

私は、C#の小さなサーバアプリケーションで、VT100/ANSI端末インタフェース(telnetまたはモデム経由)を提供しています。VT100/ANSI端末を理解する

私はVT100/ANSIに関するいくつかの調査をしています。私が読んだほど、混乱しています。私はansiのエスケープ/コントロールシーケンスを扱うための簡単なパーサを実装したいと思っていますが、仕様には多くの可能なコマンドが含まれています。基本的に私の質問は次のようになっています。

1)telnetベースのクライアント(パテのようなもの)やシンプルなダイヤルアッププログラム(ミニコムやハイパーターミナルのようなもの)を扱うには、どのコマンドを実装すればよいでしょうか。エスケープシーケンスの多くは、単にそれらのアプリケーションで使用されたり無視されたりすることはないと確信しています。

2)C0制御文字の前にESC文字が付いている場合にのみ処理する必要がありますか?または、通常のテキストシーケンスでそれらに遭遇したときもですか?私はドキュメントからこの重要な情報を引き出すことはできません。

3)プライベートコントロールシーケンスについて気にする必要がありますか?

ありがとうございます。

Jeroen

+0

[C#Telnet Library](http://stackoverflow.com/questions/390188/c-sharp-telnet-library) –

+0

の複製はありません。Telnetコマンドは、VT100コントロールコードとは異なるものです。 –

答えて

2

どのような場合でもエスケープシーケンスを検出する必要があります。しかし、あなたはそれらのすべてを解釈する必要はありませんが、少なくともそれらをスキップすることができるはずです。

たとえば、Esc[5mが点滅モードになります。このモードを無視する場合は、"Esc[5m"をスキップしてください。

C0制御文字の先頭にESCが付いていないと思います。

私はこれらのプライベートコントロールシーケンスに遭遇したことはありません。それらが使用されるのを待ってください。決して使用されないかもしれない何かを実装することに意味はありません。

+0

本当ですが、私はそれらのいくつかは本当にオプションではないと思います。たとえば、私はXON/XOFFコマンドシーケンスを無視して取り除くことはできないと思っています。少なくとも、ESC [c(= Query Device Code)には対応する必要があります。そして、C0コードSOH(=ヘッダーの開始)、EM(= End of Medium)など... –

+0

これらのコードのすべてが使用されるわけではありません。実験だけが役に立ちます。 XON/XOFFは通信プロトコルの一部であり、表示制御には使用されません。 –