我在开发一个项目时,遇到一个很是困惑的问题!
当一个用户登录,我将UserBean发送到服务器,服务器进行接收,并加入ArraryList。但是,我用ObjectInputStream 来接收来自服务器端的ArraryList,在服务器端发送数据之前,检查其size为1,而我接收的ArraryLsit的size却为0。就是说明明有人登录客户端却收不到数据。这是为什么??下面是代码片段!(补充一下,这个是个多线程,客户端为applet)。
Client:
......
    while(true){
    this.receive();
    this.send();    }
    public void receive() throws IOException, ClassNotFoundException {        if (oi == null) {
            oi = new ObjectInputStream(so.getInputStream());
        }
        users = (ArraryList) oi.readObject();//users 为一个static ArraryList。
        System.out.println(users.size());
    }    public void send() throws IOException {
        if (oo == null) {
            oo = new ObjectOutputStream(so.getOutputStream());
        }
        oo.writeObject(ChessApplet.user);//ChessApplet.user为一个static UserBean。    }
.....
Server:public class UserProcessing implements Runnable {
    static ArrayList userList;
    private UserBean user;
    private Thread userProcessingThread;
    private ServerSocket userSocket;
    private Socket socket;
    private ObjectInputStream reader;
    private ObjectOutputStream writer;
    public UserProcessing(ArrayList userList, ServerSocket ss) {
        userList = userList;
        this.userSocket = ss;
        userProcessingThread = new Thread(this);
        userProcessingThread.start();
    }
    public void run() {
        try {
            socket = userSocket.accept();
            FrmInfo.addInfo(socket.getInetAddress().getHostName() + "成功连接本服务器" +
                            FrmInfo.USER_PORT + "端口!\n");
            send();            while (true) {
                receive();
                if (userList.size() != 0) {
                    for (int i = 0; i < userList.size(); i++) {
                        user = (UserBean) userList.get(i);
                        FrmInfo.addInfo(user.getUserName() + "\n");
                        
                    }
                }
                writer.writeObject(userList);
            }
        } catch (IOException ex) {
            FrmInfo.addInfo(ex.getMessage() + "\n");
        } catch (ClassNotFoundException ex1) {
            ex1.printStackTrace();
            
        } 
    }
    private void init() throws IOException {
        socket = userSocket.accept();
        FrmInfo.addInfo(socket.getInetAddress().getHostName() + "成功连接本服务器" +
                        FrmInfo.USER_PORT + "端口!\n");
        send();
    }    private void send() throws IOException {
        if (writer == null) {
            writer = new ObjectOutputStream(socket.getOutputStream());
        }
        writer.writeObject(userList);
    }    private void receive() throws IOException, ClassNotFoundException {
        if (reader == null) {
            reader = new ObjectInputStream(socket.getInputStream());
        }
        userList = (ArrayList) reader.readObject();    }}
后来,我以为是ArraryList不支持同步的原因,把ArraryList改成Hashtable,还是不行。
哪位大虾知道阿!在线急等