2012-03-22 247 views
1

我正在使用C#中的小型服務器應用程序,它應該提供VT100/ANSI終端接口(通過telnet或調制解調器)。瞭解VT100/ANSI終端

我正在做一些關於VT100/ANSI的研究,我讀得越多,我越是感到困惑。我想實現一個簡單的解析器來處理ansi轉義/控制序列,但是規範包含了很多可能的命令。基本上,我的問題歸結爲:

1)如果我處理基於telnet的客戶端(如putty)或簡單的撥號程序(如minicom或hyperterminal),應執行哪些命令。我確定很多轉義序列在這些應用程序中都沒有被使用或忽略。

2)我只需要處理C0控制字符時,他們的ESC字符前綴?或者當我遇到他們在正常的文本序列?我無法從文檔中獲得這些關鍵信息。

3)我應該關心私人控制序列嗎?

在此先感謝,

Jeroen。

+0

[C#Telnet庫]的可能重複(http://stackoverflow.com/questions/390188/c-sharp-telnet-library) – 2012-03-22 23:49:21

+0

不是真的,Telnet命令與VT100控制代碼不同。 – 2012-03-27 10:47:51

回答

2

在任何情況下您都必須檢測轉義序列;然而,你不需要解釋所有這些,但至少你應該可以跳過它們。

例如Esc[5m打開閃爍模式。如果您想忽略此模式,請跳過"Esc[5m"

我不認爲C0控制字符帶ESC前綴。

我從來沒有遇到這些私人控制序列。等待看它們是否被使用。實現可能永遠不會使用的東西沒有意義。

+0

是真實的,但我認爲其中有些並非真正可選。例如,我認爲我可以忽略忽略XON/XOFF命令序列,我想至少應該對ESC [c(=查詢設備代碼)做出響應。然後出現一些我完全不知道的C0命令,例如:C0代碼SOH(=頭部起始),EM(=媒體結束)等等。 – 2012-03-22 22:00:17

+0

並非所有這些代碼都將被使用。只有實驗纔會有幫助。 XON/XOFF是通信協議的一部分,不用於顯示控制。 – 2012-03-22 22:17:39