送信に PrintWriter/BufferedWriter を使用し、読み取りに InputStreamReader を使用して、ソケット接続を介してプロパティの複数のインスタンスを送信しようとしましたが、すべてループを介して送受信されました。
送信者:
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
for (int i = 0; i < vector.size(); i++) {
Properties mail = (Properties) vec.get(i);
mail.store(bw, line);
bw.newLine();
bw.flush();
}
レシーバー:
ireader = new InputStreamReader(socket.getInputStream());
Properties[] mails=new Properties[c];
for (int i = 0; i < c; i++) {
Properties p;// = new Properties();
mails[i] = new Properties();
mails[i].load(ireader);
}
しかし、ループ全体が完了した後にのみ、受信者から送信された最後の Properties オブジェクトを受信しているだけです。これは、ソケットが最終的に閉じるまでレシーバーがロードされていることを意味します。ドキュメントには、load() の場合、基になるリーダーは戻った後も開いたままになっていると書かれていますが、実際に「いつ」戻るかを説明する部分を見逃していると思います。1 つのストリームで複数のプロパティを読み取るにはどうすればよいですか?