Передача информации с одного порта на другой в Java - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю простую Java-программу, которая при запуске создает два потока, каждый из этих потоков создает сервер, который прослушивает разные порты (т.е. порт 5500, 5100), у каждого из этих серверов есть клиенты, теперь я хочу, чтобы серверыбыть в состоянии передать информацию от своего клиента друг другу. Как мне это сделать. это код, который у меня есть для серверов

class SocketSeverBrooker extends Thread{
    int portNumber = 5500;
    ServerSocket serverSocket = null;
    int clientID = 10000;


    public void run(){

        try {
            serverSocket = new ServerSocket(portNumber);


            while(true){
                try{
                    // i am accepting acconection from a client
                    Socket clientsocket = serverSocket.accept();
                    new Thread(new BrokerRunnable(clientsocket)).start();
                    System.out.println("a broker has connected with id "+ clientID);
                    clientID++;
                }catch(IOException e){
                    System.out.println("client could not connect");
                }

            }

        }catch (IOException e){
            System.out.println("could not create a connection");
        }

    }
}

class BrokerRunnable implements Runnable{

  protected Socket clientSocket;


    public BrokerRunnable(Socket clientSocket) {
        this.clientSocket = clientSocket;
    }

    public void run() {
        // create two way communication
       // this is used to get input from the connected client clientSocket.getInputStream()

        // new BufferedReader();

        try{

            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);// write the sever
            String arg1;
            arg1 = in.readLine();
            System.out.println( arg1);
            Scanner scanner = new Scanner(System.in);
            String msgToBrokker = scanner.nextLine();
            out.println(msgToBrokker);


        }catch(IOException e){
            System.out.println("could not read");
        }

    }
}

1 Ответ

0 голосов
/ 14 ноября 2019

Я не могу задать вопрос, используя комментарий. Отсюда и пишу здесь. Извините.

Что я понял из вопроса, пожалуйста, исправьте меня, если это не так.

  1. У нас есть несколько серверов (S), и у каждого может быть несколько клиентов(С) тоже. S1 -> S1C1, S1C2, ...., S1Cn S2 -> S2C1, S2C2, ...., S2Cn ...... Sm -> SmC1, SmC2, ...., SmCn

  2. Серверы для обмена информацией с другими серверами, которая может быть передана клиентам.

Если приведенное выше понимание верно, то у вас должен быть общий объект (например, список). , карта), которая может быть общей для всех серверов. Этот объект будет хранить информацию со всех серверов. Вам нужно будет сформулировать логику того, как вы будете читать информацию на сервере (например, S1 не должен читать информацию, добавленную самостоятельно).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...