内部ネットワークアプリケーション間の通信用のシンプルなTelnet接続デーモンを構築していて、BufferedReaderから最初の行を読み込むときに問題が発生しました。BufferedReaderストリームの最初の読み込み時のガベージ
このコードスニペットは、そこに他の迷惑メールがたくさんあるので完全ではありません。オブジェクトの作成とスチームからの読み込みだけを取り除きました。 telnet接続にtest
を入力
in = new BufferedReader(new InputStreamReader(this.client.getInputStream()));
out = new PrintWriter(this.client.getOutputStream(), true);
String line;
while (true) {
out.println(flag); // flag is just an integer
System.out.println(line);
// Processing the line and updating 'flag' accordingly
}
は、プログラムを実行しているコンソールで v? v v? v' ²? v? ²?test
を得ました。これは、最初の行の後に送信される行には発生しません。
最初の行で送信されないように、ユーザーがそのインターフェイスに入る前にそのゴミをクリアする方法はありますか?または私のtelnetクライアントによって引き起こされるこの問題です(これとインターフェイスするクライアントを書くと修正されるかもしれません)。
私はそのプロトコルから何も利用していないので、あなたは正しいと思います。実際にはtelnetではなく、rawを使用していたはずです(実際にtelnetと呼ばれる理由はわかりません)。とにかく、私はそれを理解しました、ありがとう。 – SamT
@SamT: '' telnet'は "普通のTCP/IP接続クライアント"としてよく使われますが、実際には非常に特殊なTelnetプロトコルのクライアントです(最近はあまり使われていません)。 –
@ Joachim Sauer私はそれが「ほとんど使われていない」とは言いません。あなたはそこにあるコードの量に驚くでしょう。 TN3270と銀行バックエンド現時点では、プロダクションにTelnetクライアント/サーバーが組み込まれたシステムがあります。 – EJP