您可以在客戶端或服務器上實現此功能。
對於客戶端的實現有兩種方式(這基本上是相同的):
當客戶端連接,服務器發送命令及其參數的列表,並且在緩存客戶端。當用戶按下TAB鍵時,客戶端將搜索此緩存數據。
當客戶端通知TAB鍵被按下時,它會要求服務器列出可能的完成項。爲了加快速度,這個列表應該緩存在客戶端。
所以這裏的基本解決方案是:服務器發送數據到客戶端,客戶端顯示數據。
對於服務器端執行,你必須使用telnet協商來告訴客戶端發送原始未煮過的字符和按鍵,而不到服務器的任何干擾。然後服務器可以檢查TAB密鑰並執行完成。
這裏的問題是,那麼你必須添加的所有命令行編輯,並在服務器代碼提示,並且可以不依賴於客戶端上的是什麼,但一個「啞終端」。
擁有全部處理完成服務器端具有您幾乎可以使用任何Telnet客戶端(只要它能夠處理的telnet談判),並沒有使自己的自定義客戶端的上行空間。缺點是你必須自己在服務器中實現整個命令行編輯功能,並且按鍵的等待時間可能很長,因爲每個密鑰都必須發送到服務器,然後從服務器回傳。
有一個定製的客戶端,有可以輕鬆處理命令行編輯,並完成幫助圖書館上攻。這裏的主要缺點是你必須製作一個自定義的客戶端。
看來你可能想[閱讀更多關於telnet協議](http://en.wikipedia.org/wiki/Telnet)。特別是[相關的RFC](http://en.wikipedia.org/wiki/Telnet#Related_RFCs)(如[linemode選項](http://tools.ietf.org/html/rfc1184))。 –