通过streamreader读取多个java属性

通过streamreader读取多个java属性,java,sockets,Java,Sockets,我一直在尝试通过套接字连接发送多个属性实例,使用PrintWriter/BufferedWriter发送和InputStreamReader读取,所有属性都通过循环发送和接收 发件人: BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); for (int i = 0; i < vector.size(); i++) { Properties mail =

我一直在尝试通过套接字连接发送多个属性实例,使用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();
}
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream());
对于(int i=0;i
接收人:

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);
}
ireader=新的InputStreamReader(socket.getInputStream());
属性[]邮件=新属性[c];
对于(int i=0;i

但我只在完成整个循环后才接收接收器发送的最后一个属性对象。这意味着接收器一直在加载,直到插座最终关闭。文档中确实指出,对于load(),底层读取器在返回后保持打开状态,但我想我错过了解释它实际返回“何时”的部分。如何使用一个流读取多个属性?

假设您有两个属性实例:

A:

B:

如果发送这两个属性实例,将在线路上发送的内容将是:

a=b
c=d
e=f
g=h
接收者无法知道这是两个不同的实例。它读取所有属性,直到流结束,并将所有读取的属性存储在单个对象中


您需要找到另一个协议来发送这两个对象。

是的。我能做到这一点的唯一方法是重新连接插座。我已经习惯了python的泡菜。我想我应该一直使用序列化。
e=f
g=h
a=b
c=d
e=f
g=h