- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:readLine()の動作(改行と終端))
readLine()の動作についての疑問
このQ&Aのポイント
- readLine()の終端時にnullを返すため、文字列の最後や一行目の読み込みができないことを確認しました。
- 発言の終わりを待つ方法として、nullが返されるまでループさせ、文字列を結合してから送信する方法が考えられます。
- 簡単に発言単位で送信する方法はありませんが、nullを受け取ったら送信する方法が比較的簡単な解決策です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >readLine()が終端時にnullを返すということは、 >一行の文字列や、最終行はそのままでは >文字列を読み込めない、と理解していいのでしょうか これは試してみるとわかると思いますが、一行の文字列だろうと最終行だろうと、問題なく読み込めます。 ファイルの終端に達すると、それまでを一行として返し、その後で再びReadLine()が呼ばれるとnullを返します。 >string=buf.readLine(); このbufはBufferedReaderでその先はSocketのInputStreamにつながっているということですよね? >これだと、行の終わりと、発言の終わりが、 >区別できなくなってしまいます。 >nullになるまでループさせ ソケット通信でEOFって出てきましたっけ? SocketクラスのshutdownInput()を呼べば出て来るみたいですけど、それだと、接続が切れてしまいますよね。 クライアントは一回発言をすると、接続を切ってしまうということでしょうか? もし、リアルタイムなチャットのことをおっしゃっているのなら、なんだか変な感じがします。 リアルタイムなら、接続を切らず、一行で一発言にした方がいいのではないでしょうか?
お礼
回答ありがとうございます。 重大な考え違いがありました。 改行を含めた、発言単位で、いちいち終端 があるものと思っていました。 プログラムの組み方を変えてみます。