• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:readLine()の動作(改行と終端))

readLine()の動作についての疑問

このQ&Aのポイント
  • readLine()の終端時にnullを返すため、文字列の最後や一行目の読み込みができないことを確認しました。
  • 発言の終わりを待つ方法として、nullが返されるまでループさせ、文字列を結合してから送信する方法が考えられます。
  • 簡単に発言単位で送信する方法はありませんが、nullを受け取ったら送信する方法が比較的簡単な解決策です。

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんにちは。 >readLine()が終端時にnullを返すということは、 >一行の文字列や、最終行はそのままでは >文字列を読み込めない、と理解していいのでしょうか  これは試してみるとわかると思いますが、一行の文字列だろうと最終行だろうと、問題なく読み込めます。  ファイルの終端に達すると、それまでを一行として返し、その後で再びReadLine()が呼ばれるとnullを返します。 >string=buf.readLine();  このbufはBufferedReaderでその先はSocketのInputStreamにつながっているということですよね? >これだと、行の終わりと、発言の終わりが、 >区別できなくなってしまいます。 >nullになるまでループさせ  ソケット通信でEOFって出てきましたっけ?  SocketクラスのshutdownInput()を呼べば出て来るみたいですけど、それだと、接続が切れてしまいますよね。  クライアントは一回発言をすると、接続を切ってしまうということでしょうか?  もし、リアルタイムなチャットのことをおっしゃっているのなら、なんだか変な感じがします。  リアルタイムなら、接続を切らず、一行で一発言にした方がいいのではないでしょうか?

noname#10667
質問者

お礼

回答ありがとうございます。 重大な考え違いがありました。 改行を含めた、発言単位で、いちいち終端 があるものと思っていました。 プログラムの組み方を変えてみます。