1

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

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

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

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

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

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

我从 Linux Fedora Core 6 运行。

4

1 回答 1

1

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

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

于 2009-07-01T14:06:28.753 回答