• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ネットワークプログラミングでの読み込みについて)

ネットワークプログラミングでの読み込みについて

このQ&Aのポイント
  • ネットワークプログラミングでの文字列入力と出力の処理方法について
  • サーバ側の出力が表示されない原因と解決方法
  • バッファリングによる入力処理の問題とその対策

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

  • ベストアンサー
  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

1. サーバのaccept()コールとReaderの作成は、I/Oループの外に出してください。 2. 相手がreadLine()で入力を行っているときは、送信側は各行の終わりに必ず改行'\n'を出力してください。そうしないと、readLine()は永遠にブロックします。 readLine()で読んだ文字列には改行が付いていないので、そのまま出力してはいけません。'\n'を付けるか、またはbw.write()の直後にnewLine()を呼ぶこと。 (flush()コールは、たいへんけっこうです。これを忘れると、ネットワーク上のI/Oはうまくいきません。)

noname#72730
質問者

お礼

ありがとうございます! 回答のとおりコードを直したところちゃんと動きました。 accept()はループ毎に呼ばないで最初の接続時だけ呼べばcloseするまで通信は確立出来るんですね。 BufferedReader#readLineも標準入力からの入力+Enter押下した際の、 「Enter押下=復帰改行」で\nが含まれた文字列が返ってくるのかと思ったら 終端文字は含まれないようですね。 非常に分かりやすい回答を頂き助かりました! 今回は本当にありがとうございます!

関連するQ&A