Я не могу войти на хост HPUX, используя telnet , когда процесс telnet создается с помощью Java-программы.Почему «конечная скорость» собственного клиента telnet linux 0,0, когда порождена с Java (и как я могу ее исправить)?
Когда я подключаюсь к хосту HPUX из командной строки (из bash), я могу войти в систему и использовать сеанс.
Когда я запускаю процесс telnet с Java, происходит что-то странное. Мне предлагается ввести имя пользователя и отправить его. Я также получаю подсказку для пароля. Но по какой-то причине сервер telnet не ждет пароля; он завершает сеанс перед его отправкой.
Рассматривая обмен в wirehark, я вижу, что, как только клиент telnet отправит ACK для запроса пароля, сервер отправляет пакет FIN, завершая сеанс инициализации.
Одно из различий, которое я вижу в рукопожатии, ведущем к подсказке пароля, - это то, что сервер запрашивает скорость терминала. При запуске telnet из командной строки скорость отправки терминала составляет 38400,38400. При запуске telnet с Java скорость терминала равна 0,0.
Рассматривая исходный код клиента telnet, я обнаружил, что одним из источников «конечной скорости», отправленным клиентом telnet, является выход API cfgetospeed()/cfgetispeed(). Согласно this, значение скорости передачи в 0 раз «зависает», и это похоже на то, как процесс telnetd HPUX интерпретирует его.
Я бегу от Linux Fedora Core 6.
Параметр TERM устанавливается и не влияет на это. Нерест telnet от bash также не помогает. Я обнаружил, что вызов telnet из «ожидаемого» делает трюк, хотя мне все еще интересно понять основную проблему здесь. –
Мне тоже интересно, это звучит довольно странно. Я искал в Интернете, так что посмотрим, откуда вызов cfgetospeed() может получить свои данные, но ничего не нашел. –
$ TERM не влияет на скорость терминала. Скорость терминала устанавливается независимо. – dolmen