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

为什么是";终端速度“;从Java派生的本机linux telnet客户端0,0(我如何修复它)?,java,terminal,telnet,Java,Terminal,Telnet,当telnet进程由Java程序创建时,我无法使用telnet登录到HPUX主机 当我从命令行(从bash)telnet到HPUX主机时,我能够登录并使用会话 当我从Java生成telnet进程时,发生了一些奇怪的事情。系统会提示我输入用户名并提交。我还得到了输入密码的提示。但由于某些原因,telnet服务器不等待密码;它在发送会话之前退出会话 查看wireshark中的exchange,我发现只要telnet客户端发送密码提示的ACK,服务器就会发送一个FIN数据包,从而终止初始化会话 我在密

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

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

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

查看wireshark中的exchange,我发现只要telnet客户端发送密码提示的ACK,服务器就会发送一个FIN数据包,从而终止初始化会话

我在密码提示前的握手中看到的一个区别是服务器要求终端速度。从命令行运行telnet时,它发送的终端速度为3840038400。从Java运行telnet时,终端速度为0,0

查看telnet客户端的源代码,我发现telnet客户端发送的“终端速度”的一个来源是cfgetospeed()/cfgetispeed()API的输出。根据,0波特率的含义是“挂起”,这看起来像是HPUX telnetd进程在解释它


我是从Linux Fedora Core 6运行的。

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


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

我怀疑$TERM环境变量间接用于确定速度,而从Java生成时未设置


如果不是这样,您还可以尝试通过bash启动telnet,即从Java启动bash并将其发送到telnet命令行。这将提供与手动启动时完全相同的环境。

正在设置术语变量,对其没有影响。从bash生成telnet也没有帮助。我发现从“expect”调用telnet就可以做到这一点,尽管我仍然很好奇这里的根本问题。我也很好奇——听起来很奇怪。我在网上搜索了一下,看看cfgetospeed()调用可能从哪里获得数据,但没有找到任何东西。$TERM对终端速度没有影响。终端速度是独立设置的。正在设置术语变量,对其没有影响。从bash生成telnet也没有帮助。我发现从“expect”调用telnet就可以做到这一点,尽管我仍然很好奇这里的根本问题。我也很好奇——听起来很奇怪。我在网上搜索了一下,看看cfgetospeed()调用可能从哪里获得数据,但没有找到任何东西。$TERM对终端速度没有影响。终端速度是独立设置的。