私はSMTPサーバーを作っているプロジェクトで作業しています。私は各入力行を読み込み、その行を別のスレッドに渡して処理させようとしています。ただし、このコードでは、接続が終了するまで回線が送信されません。著者は、我々と言うので、私はまた、エリオットハロルドでの「Javaネットワーク第4版プログラミング」引用するつもりですリーダーから各行を印刷する方法
while (true) {
StringBuilder line = new StringBuilder();
try {
int c;
while ((c = in.read()) != -1){ //this reads the line
line.append((char) c); //add the character to our line
}
String response = Parser.parse(line.toString); //give the line we just read to the parser for processing
} catch (IOException ex) {
System.err.println("IOException while reading the clients mesasge");
}
}
:私はそれが新しいラインがwhileループを破壊しないという事実に関係していると思います異なるオペレーティングシステムに異なる改行文字区切り文字(\ nまたは\ r \ nなど)があるため、BufferedReaderまたはDataInputStreamのreadLine()メソッドを使用しないでください。
また、これらのストリームを使用していません私がreadLine()を使用したかったとしても、私はできませんでした。
誰もが、私は
実際には複数の文字を読み取ると、現在はEOFまで読み取ります。私は行全体を読み込もうとしていますが、上記のように、異なるオペレーティングシステムの改行文字が異なるため、readLine()は使用しないでください。 – yasgur99
@ yasgur99 EOFまで一度に1文字ずつ読み込みます。行とは何も関係ありません。あなたの作者は間違っており、Javadocを読む必要があります。 – EJP
だから、readLine()は安全ですか? – yasgur99