我想实现一个聊天室,用socket实现的,然后我想在客户端能看到所有的在线用户,但是现在有个问题 当有新的用户参与进来,怎么样才能让客户端进行刷新。我一开始是这样做的 在服务器定义一个静态变量 Map 用于记录所有在线用户的名字和ip 然后客户端定时进行向服务器端得到那个Map 但是都是不成功 请问大家还有什么好的办法么

解决方案 »

  1.   

    我也是这样想的啊 但是 实现不了 我把源码贴上来好了 这个是服务器端线程的 map是静态变量public void run() {
    try {
    while (true) {
    String message = in.readLine();
    if (message.contains("login")) {
    String name = message.replaceAll("login", "");
    synchronized (users) {
    users.put(name, socket.getInetAddress()
    .getHostAddress().replace("/", "")); objectOut.writeObject(users);
    }
    }// 结束if
    else if (message.contains("get")) {
    synchronized (users) {
    objectOut.writeObject(users);
    }
    } else { }
    }// 结束while
    }// 结束try客户端 监听的线程 刷新  public void run() {
    try {
                while (true) {
    Thread.sleep(1000);
    out.println("get");

    this.users = (Map) objectIn.readObject();
    model.removeAllElements();
    Iterator it = users.keySet().iterator();
    while (it.hasNext()) {
    model.addElement(it.next());

    } }
    } catch (Exception e) { }
      

  2.   

    那个map老是得不到更新的那个map