ここでいくつかの質問と回答を読んだところ、telnetストリームが実際に閉じられることはないようです。DataAvailable()を使用しても戻りません。
完了するまでに非常に長い時間がかかったコードをいくつか継承しましたが、問題はtelnetサーバーであると考えました。ただし、コードがtelnetサーバーの応答を格納しようとするバイト[32757]があります。
次のようなもの:
Byte byteArray[] = new Byte[32757];
TcpClient sock = new TcpClient();
sock.GetStream().read(byteArray, 0 byteArray.length);
32757バイト以上がない場合、このコードは、バイト配列のサイズを構成するのに十分な空のパケットが送信されるまで待機すると想定しています。これは正しいです?
telnetサーバーが必要なものをすべて送信し終えたかどうかを確認する方法はありますか?telnetセッションの各「ページ」に表示される終了文字または文字列はありません。
このコードを修正する方法は、一度に数バイトを読み取り、それを文字列に追加し、文字列で終了文字または文字のセットをチェックして、見つかった場合は返すことだと考えていました。それ以外の場合は、さらにバイトを読み取り、それを文字列に追加して、もう一度確認します。
提案?