首页 文章

为什么从Java生成本机linux telnet客户端0,0的“终端速度”(我该如何修复它)?

提问于
浏览
1

当Java程序创建telnet进程时,我无法使用telnet登录HPUX主机 .

当我从命令行(来自bash)telnet到HPUX主机时,我能够登录并使用该会话 .

当我从Java生成telnet进程时,会发生一些奇怪的事情 . 我被提示输入用户名并提交 . 我也得到了密码的提示 . 但由于某种原因,telnet服务器不等待密码;它在发送之前退出会话 .

查看wireshark中的交换,我看到一旦telnet客户端发送了密码提示的ACK,服务器就会发送FIN数据包,终止初始化会话 .

我可以在导致密码提示的握手中看到的差异之一是服务器要求终端速度 . 从命令行运行telnet时,它发送的终端速度为38400,38400 . 从Java运行telnet时,终端速度为0,0 .

查看telnet客户端的源代码,我发现telnet客户端发送的"terminal speed"的一个源是cfgetospeed()/ cfgetispeed()API的输出 . 根据this,0波特率的含义是"hang up",这就是HPUX telnetd进程正在解释它的方式 .

我正在使用Linux Fedora Core 6 .

1 回答

  • 1

    我怀疑$ TERM环境变量是间接用于确定速度的,并且在从Java生成时不会设置 .

    如果不是这样,你也可以尝试通过bash启动telnet,即从Java启动bash并发送telnet命令行 . 这应该提供与手动启动时完全相同的环境 .

相关问题