2017-04-06 2 views
-1

私は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()を使用したかったとしても、私はできませんでした。

誰もが、私は

答えて

1
while ((c = in.read()) != -1){ //this reads the line 

ありません、それはないやろうとしている何を達成することができますどのように任意のアイデアを持っています。 1文字読み込みます。

BufferedReader.readLine()を使用してください。

著者が異なるオペレーティングシステムが異なる改行を持っているので、我々はBufferedReaderのかのDataInputStreamののreadLine()メソッドを使用してはならないと言うので、私はまた、エリオットハロルドにより「第4版プログラミングJavaのネットワーク」を引用するつもりです区切り文字(\ nまたは\ r \ nなど)。

Elliot Rusty HaroldはJavadocを読む必要があります。これはグレードAのBSです。この本の誤謬の長いリストについては、Amazonのレビューを参照してください。

+0

実際には複数の文字を読み取ると、現在はEOFまで読み取ります。私は行全体を読み込もうとしていますが、上記のように、異なるオペレーティングシステムの改行文字が異なるため、readLine()は使用しないでください。 – yasgur99

+0

@ yasgur99 EOFまで一度に1文字ずつ読み込みます。行とは何も関係ありません。あなたの作者は間違っており、Javadocを読む必要があります。 – EJP

+0

だから、readLine()は安全ですか? – yasgur99

関連する問題