1

telnet プロセスが Java プログラムによって作成されている場合、telnetを使用して HPUX ホストにログインできません。

コマンド ライン (bash から) から HPUX ホストに telnet で接続すると、ログインしてセッションを使用できます。

Java から telnet プロセスを起動すると、奇妙なことが起こります。ユーザー名の入力を求められ、送信します。パスワードのプロンプトも表示されます。しかし、何らかの理由で telnet サーバーはパスワードを待ちません。送信される前にセッションを終了します。

Wireshark でのやり取りを見ると、telnet クライアントがパスワード プロンプトに対して ACK を送信するとすぐに、サーバーが FIN パケットを送信し、初期化セッションを終了することがわかります。

パスワード プロンプトに至るまでのハンドシェイクで確認できる違いの 1 つは、サーバーが端末の速度を要求することです。コマンド ラインから telnet を実行すると、送信される端末速度は 38400,38400 になります。Java から telnet を実行している場合、端末速度は 0,0 です。

telnet クライアントのソース コードを調べたところ、telnet クライアントから送信された「端末速度」のソースの 1 つは、cfgetospeed()/cfgetispeed() API の出力であることがわかりました。thisによると、0 ボーレートの意味は「ハングアップ」であり、HPUX telnetd プロセスがそれを解釈しているように見えます。

Linux Fedora Core 6 から実行しています。

4

1 に答える 1

1

$ TERM環境変数は速度を決定するために間接的に使用されており、Javaから生成するときに設定されていないのではないかと思います。

そうでない場合は、bashを介してtelnetを起動することもできます。つまり、Javaからbashを起動し、telnetコマンドラインを送信します。これにより、手動で起動した場合とまったく同じ環境が提供されます。

于 2009-07-01T14:06:28.753 に答える