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中的第二个元素啊。

解决方案 »

  1.   

    可能是序列化相关的问题:
      将服务端的发送代码改为:
      oos.writeObject(vec.clone());试一下。
      

  2.   

    try{
           //建立一个向量,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中的所有数据清除,而是在你在服务器端进行下一次构成的时候,将数据继续加载上一次的数据后面,试试将它改成局部变量