Как сервер Telnet взаимодействует с клиентом?

Я хочу написать приложение на C#, где оно подключается к серверу telnet и взаимодействует с сервером. Мне было интересно, как сервер Telnet отправляет информацию клиенту. Я просмотрел (просмотрел) Telnet RFC и посмотрел на входящие пакеты, поступающие с сервера, и все еще немного сбит с толку. Может кто-нибудь привести пример того, как сервер перемещает курсор в клиенте telnet и как он может изменять цвета символов? (Пример был бы наиболее оценен)

Обновить я

Вот некоторые дополнительные ресурсы VT100:

  1. ANSI / VT100 Терминальное управление
  2. vt100_codes_news.txt

Обновление II

С большим количеством исследований и времени, вот что я узнал: Программирование Telnet с использованием C#

3 ответа

Решение

Перемещение курсора и изменение цвета не выполняется протоколом telnet.

Ваш telnet-клиент эмулирует терминал, скорее всего, вариант VT-100. Чтобы переместить курсор и изменить цвет, сервер отправляет escape-последовательности, специфичные для типа эмулируемого терминала (который отправляется при согласовании протокола telnet).

Если вам не нужны эти escape-последовательности, достаточно сообщить серверу о согласовании протокола telnet, что вы "тупой" терминал. Если вы хотите их (или если сервер предполагает, что у всех есть VT-100 и всегда отправляет их), вам придется внедрить эмулятор терминала VT-100 (или, по крайней мере, достаточно, чтобы отказаться от того, что вы не хотите).

Простой поиск в Google показывает множество клиентов с открытым исходным кодом Telnet (и других сетевых протоколов), написанных на C#. Вы можете просто загрузить исходный код на один и посмотреть, как они реализуют согласование соединения и команды.

Что касается обработки курсора, цвета текста и т. Д., То теперь вы говорите об эмуляции терминала. Для этого вам понадобится библиотека. Это выглядит как хорошее место для начала.

Другие вопросы по тегам