Вы должны понимать, от чего исходит эхо. TCP-соединения и java InputStreams не обеспечивают эхо-сигналы самостоятельно. Программа telnet, выполняемая пользователем, обычно запускается в режиме «локального эха», что означает, что она перекликается со всем, набранным пользователем на экране пользователя. Когда клиент telnet подключается к фактическому серверу telnet, он обычно согласовывает режим «удаленного эха», и в этом случае удаленная система обеспечивает эхо. Когда telnet подключается к чему-то другому, например HTTP или SMTP-серверу, он просто остается в режиме локального эха.
Пользователь может выдать команду отключить локальное эхо в клиенте, но было бы не очень удобно, если бы ваши пользователи этого требовали. Как говорится в другом ответе, если вы хотите включить и выключить эхо, вам нужно будет увеличить ваш сервер, чтобы поддерживать протокол telnet, а затем согласовать удаленное эхо с клиентами.
Если вы это сделаете, вы также столкнетесь с проблемой линейки по времени и символом по времени. Telnet запускается в режиме «по очереди». Он отличает клавиши редактирования строк, такие как backspace локально, и только отправляет строку на сервер, когда пользователь обращается к возврату. Если вы выполняете удаленное эхо, вам нужно эхо-символы, как пользователь вводит их, а не после того, как он обратится к возврату. Таким образом, вам придется поддерживать персонаж по времени и реализовывать редактирование строк на сервере.
Вы должны внимательно изучить программу сервера telnet на своем сервере. Возможно, можно использовать существующий сервер telnet в качестве интерфейса для вашей программы, а не переопределять все, что он делает. Удачи.
Вы на месте, Крис. RFC многое проясняет. Я очень упростил просмотр telnet; реализуя его как должный NVT, должен выполнить то, что я хочу. Благодарю. – Andrew 2008-12-15 09:35:15