try{
vec1=(Vector)ois.readObject();//vec1为Vector的一个对象
Enumeration temp2=vec1.elements();
while(!temp2.nextElement().toString().equalsIgnoreCase("退出")){
jTextArea1.append(vec1.toString()+"\n");
vec1=(Vector)ois.readObject();
temp2=vec1.elements();
}
这些语句有问题?
也就是如果你的Vector中的第一个对象不是"退出",就继续读其他的Vector对象,而不会处理Vector中的第二个元素啊。
vec1=(Vector)ois.readObject();//vec1为Vector的一个对象
Enumeration temp2=vec1.elements();
while(!temp2.nextElement().toString().equalsIgnoreCase("退出")){
jTextArea1.append(vec1.toString()+"\n");
vec1=(Vector)ois.readObject();
temp2=vec1.elements();
}
这些语句有问题?
也就是如果你的Vector中的第一个对象不是"退出",就继续读其他的Vector对象,而不会处理Vector中的第二个元素啊。
将服务端的发送代码改为:
oos.writeObject(vec.clone());试一下。
//建立一个向量,vec为Vector的一个对象
String s=null;
s=jTextArea1.getText();
vec.add(s);
s=jTextArea2.getText();
vec.add(s);
s=jTextArea3.getText();
vec.add(s); /*事先生成一个对象输出流对象oos = new ObjectOutputStream( new BufferedOutputStream(socket.getOutputStream()));*/
oos.writeObject(vec);
oos.flush();
jTextArea1.setText("");
jTextArea2.setText("");
jTextArea3.setText("");
vec.clear();
}
catch (Exception e1)
{
}
}
其中如果你的vec的定义是全局变量,那么vec.clear可能并不向你想的那样将VECTOR中的所有数据清除,而是在你在服务器端进行下一次构成的时候,将数据继续加载上一次的数据后面,试试将它改成局部变量