2015-05-25 2 views
0

Итак, я собираюсь создать IRC, например, Chat Proramm. Все содержимое GUI для клиентского приложения.Сохранить соединения сокета

Теперь моя проблема в том, что я хочу, чтобы несколько пользователей подключились к одному серверу. у этого сервера много чатов, и в каждой комнате есть список пользователей, которые сейчас находятся там.

Как создать Metode User.message (строковое сообщение). где я храню сокет? Могу ли я просто сохранить ClientConnection, который является runnable, в моем классе пользователя?

public class ClientConnection implements Runnable { 
    private final Socket CLIENT; 
    private String sendLine; 
    private String nextLine; 

    private BufferedReader in; 
    private PrintWriter out; 
    public ClientConnection(Socket s){ 
     CLIENT = s; 

     try{ 
      in = new BufferedReader(new InputStreamReader(CLIENT.getInputStream())); 
      out = new PrintWriter(CLIENT.getOutputStream(), false); 
     }catch(IOException IOEx){ 
      IOEx.printStackTrace(); 
     } 

     sendLine = "DATE"; 
    } 

    public void run(){ 
     try{ 

      while(true){ 

       if((nextLine = in.readLine()) != null){ 
        System.out.println(nextLine); 
       } 

       if(sendLine != null){ 
        out.println(sendLine); 
        sendLine = null; 
       } 
      } 

     }catch(SocketException SOEx){ 
       System.out.println("Client Connection Closed"); 
       return; 
     }catch(IOException IOEx){ 
      IOEx.printStackTrace(); 
     } 

    } 

    public void sendMessage(String m){ 
     this.sendLine = m; 
    } 
+0

Ваш цикл чтения не имеет смысла. Если 'readLine()' возвращает значение null, вы должны прекратить чтение и, вероятно, закрыть сокет. – EJP

ответ

0

Вы должны использовать посредник для хранения всех активных пользователей (ClientConnection -s). Этот мессенджер используется для отправки группового сообщения потребителям. Используйте конструктор в ClientConnection, чтобы зарегистрировать его в медиаторе.

+0

«должен использовать посредника» - я не понимал, что это ** только ** возможная реализация механизма чата ??? –

+0

это большое спасибо, я действительно не знал, что искать. – user3438815