Принудительный клиент telnet в режиме символов

У меня есть приложение, в котором я принимаю соединение сокета с telnet-клиентом и выставляю простой графический интерфейс персонажа с клавиатурой.

Клиент telnet, по крайней мере, в Linux, по умолчанию работает в режиме «по очереди», поэтому мне всегда нужно вручную ^]mode char .

Сброс соответствующих RFC предполагает, что если мое приложение просто отправит символы IAC DONT LINEMODE (\377\376\042) как только клиент подключится, клиент должен быть принудительно IAC DONT LINEMODE (\377\376\042) в режим символов. Однако это не имеет никакого значения.

Каков самый простой бит кода, который бы выполнил эту работу? Идеально просто строка, которую нужно отправить. Мое приложение может поглощать любой нежелательный клиент, который отправляет обратно.

Интересно. Мне посчастливилось отправить

 IAC WILL ECHO IAC WILL SUPPRESS_GO_AHEAD IAC WONT LINEMODE 255 251 1 255 251 3 255 252 34 

Кажется, что IAC WONT LINEMODE избыточен: мой клиент telnet, похоже, попал в нужное состояние без него, но я оставил его для полноты.

Для чего это стоит, решила сама.

 // IAC WONT LINEMODE IAC WILL ECHO write(s,"\377\375\042\377\373\001",6); 

получает удаленный (по крайней мере telnet от Xterm в ящике Linux) в правильное состояние.

Решение Кевина отлично работает: write(s,"\377\375\042\377\373\001",6);

Хотя комментарий немного ошибочен. Он должен сказать «DO LINEMODE», а не «WONT LINEMODE», то есть: // IAC DO LINEMODE IAC WILL ECHO

(Источник: rfc854 )

  • Таблицы стилей CSS по умолчанию для браузеров
  • как изменить браузер по умолчанию с помощью c # или командного файла
  • Конструкторы и наследование по умолчанию в Java
  • Что означает «default» после объявления функции classа?
  • Почему компилятор не может вывести тип шаблона из аргументов по умолчанию?
  • Почему в параметрах C ++ последнее значение должно быть добавлено последними?
  • Существует ли разумный подход к параметрам типа «по умолчанию» в C # Generics?
  • Force R не использовать экспоненциальную нотацию (например, e + 10)?
  • Программный эквивалент по умолчанию (Тип)
  • Интерфейс с методами по умолчанию vs Абстрактный class в Java 8
  • Как открыть браузер по умолчанию в C #
  • Давайте будем гением компьютера.