Клиент-серверное многопоточное чат-приложение. общение клиента с клиентом

Итак, у меня есть домашнее задание по созданию 2 клиентов на 1 сервере, которые общаются на одном сервере. Клиент 1 и клиент 2 могут общаться с сервером, но мне нужно, чтобы 2 клиента общались с каждым, и я в тупике ??

Я почти уверен, что нахожусь на правильном пути, используя ArrayList для добавления клиентов и использования цикла for для их прохождения. Я просто не знаю, как подключить клиентов t для общения друг с другом. Вот мой код.

//Класс коммуникационного потока В файле Server.class. Цикл for в цикле while true должен заставить двух клиентов общаться, но это не так ??

class ComThreads implements Runnable{
              private Socket s;
              java.util.Date date=new java.util.Date();

              public ComThreads(Socket s)
              {
                this.s=s;
              }

              public void run()
              {     try {
                  DataInputStream inputFromClient = new DataInputStream(
                        s.getInputStream());
                    DataOutputStream outputToClient = new DataOutputStream(
                        s.getOutputStream());

                    while(true) {
                            String  line=inputFromClient.readUTF();
                    for(int i=0; i < clientList.size(); i++) {  
                        if(clientList.get(i).equals(s)) {
                    Socket tempSoc=clientList.get(i);
                    DataOutputStream msOut=new DataOutputStream(tempSoc.getOutputStream());
                    msOut.writeUTF(line);
                    //outputToClient.writeUTF(message);
                    msOut.flush();
                        }

                    }
                    Platform.runLater(()->{
                        ta.appendText(line);
                        ta.appendText("\n");
                    });


                    }

                } catch (IOException e) {
                  e.printStackTrace();
                }finally {
                    try {
                        s.close();
                    }catch(IOException e) {
                        // later
                    }

                }

              }

            }           

        }   

Просто нужно 2 клиента для общения. Любая помощь будет оценена по достоинству. Спасибо


person George Trakas    schedule 03.04.2019    source источник
comment
Я не следовал коду. Опубликуйте минимально воспроизводимый пример. Я предполагаю, что 2 клиента общаются через сервер.   -  person c0der    schedule 04.04.2019


Ответы (1)


Я заработал. Все, что мне нужно было сделать, это добавить класс Runnable, который читает сообщение клиента и передает его другому клиенту. Так что я просто пропустил поток в своем классе Client. Спасибо.

person George Trakas    schedule 04.04.2019