Exemplo n.º 1
0
  /* 接続している全員にmessageを送信するメソッド  『POST』*/
  public void post(String message) throws IOException {
    int flag1 = 1; // フラグ(送信者表示時に利用)

    System.out.println(message);
    List names = new ArrayList(); // 送信者リストを作る

    // チャットに参加しているユーザ全員にメッセージを送信する

    for (int i = 0; i < clients.size(); i++) {
      ChatClientHandler handler = (ChatClientHandler) clients.get(i);
      if (handler != this) { // 自分以外のユーザで
        names.add(handler.getClientName()); // 送信者リストに名前追加
        handler.send("[" + this.getClientName() + "]" + message); // メッセージを送信
      }
    }

    Collections.sort(names); // 送信者リストをソート

    String returnMessage = ""; // 初期化

    for (int i = 0; i < names.size(); i++) { //
      if (flag1 == 0) // 2人目以降、前に「,」つける
      returnMessage = returnMessage + ",";
      returnMessage = returnMessage + names.get(i); // 送信者リストに名前を追加
      flag1 = 0; // 2人目以降フラグをおろす
    }
    this.send("<< To. " + returnMessage + ">>");
  }
Exemplo n.º 2
0
  /* クライアントの情報を消去するメソッド 『BYE』*/
  void removeClient() throws IOException {
    ChatClientHandler removeHandler = this;
    ChatClientHandler handler = null;

    clients.remove(removeHandler); // クライアントをリストから消去

    post(removeHandler.getClientName() + " disconnected.");

    System.out.println(removeHandler.getClientName() + " disconnected."); // サーバ
  }
Exemplo n.º 3
0
  public void setInitialName() { // 名前をつける
    String name = "undefined";
    int num = 1;

    for (int i = 0; i < clients.size(); i++) {
      ChatClientHandler handler = (ChatClientHandler) clients.get(i);
      if (handler.getClientName().equals(name + num)) { // 同じ名前の人がいたら
        num++;
      }
    }
    this.name = name + num;
  }
Exemplo n.º 4
0
  /* 名前を変更するためのメソッド 『NAME』*/
  public void name(String name) throws IOException {

    String preName = this.getClientName();

    for (int i = 0; i < clients.size(); i++) {
      ChatClientHandler handler = (ChatClientHandler) clients.get(i);
      if (name.equals(handler.getClientName())) { // 他に同じ名前の人がいたら
        this.send("同じ名前があります。"); // クライアントに送信
        return; // メソッドの処理を終了
      }
    }
    setClientName(name); // 名前を設定する

    for (int i = 0; i < clients.size(); i++) {
      ChatClientHandler handler = (ChatClientHandler) clients.get(i);
      if (handler != this) { // 自分以外のユーザで
        handler.send("name:" + preName + "->" + name); // 他のユーザにも名前の変更を知らせる
      }
    }
    System.out.println("name:" + name); // サーバに残す
  }