Как я могу открыть два ServerSocket одновременно

1

У меня есть требование, когда мне нужно одновременно открывать два ServerSockets и постоянно слушать их для своих соответствующих сокетов.

Они работают индивидуально хорошо, но мне нужно с ними работать.

while(true){
    Socket socket = serversocket1.accept()
    new SocketProcessor(socket).start(); 
}

while(true){
    Socket socket = serversocket2.accept()
    new AnotherSocketProcessor(socket).start(); 
}

Как я могу это сделать?

Теги:
sockets
serversocket

2 ответа

1

Вы можете отсылать это отсюда. Вы должны использовать многопоточность....

Прослушивание двух портов одновременно на сервере Java с использованием многопоточности

  • 0
    Спасибо за ответ .. Я проверю и дам вам знать.
  • 0
    Пожалуйста, смотрите мой комментарий на Дмитрий Решение. Ваши решения также дадут мне ту же проблему.
0

Вы считали многопоточность?

Во-первых, мы создаем класс, реализующий интерфейс Runnable.

class SocketListenerRunnable implements Runnable {
    ServerSocket serverSocket;
    SocketProcessor socketProcessor;

    public void setServerSocket (ServerSocket serverSocket) {
        this.serverSocket = serverSocket;
    }

    public void setSocketProcessor (SocketProcessor socketProcessor) {
        this.socketProcessor = socketProcessor;
    }

    public void run () {
        while (true) {
            Socket socket = serverSocket.accept ();
            socketProcessor (socket).start ();
        }
    }
}

Затем мы просто используем его, когда это необходимо.

SocketListenerRunnable r1 = new SocketListenerRunnable ();
r1.setServerSocket (serverSocket1);
r1.setSocketProcessor (socketProcessor1);
Thread t1 = new Thread (r1);
t1.start ();

SocketListenerRunnable r2 = new SocketListenerRunnable ();
r2.setServerSocket (serverSocket2);
r2.setSocketProcessor (socketProcessor2);
Thread t2 = new Thread (r2);
t2.start ();
  • 0
    Возникла ли проблема, что внутри "r" будут бесконечные объекты Socket?
  • 0
    Что ж, этого не должно быть, поскольку процессоры сокетов запускаются в тех же потоках, что и сокеты. Таким образом, пока метод SocketProcessor.start () не завершится, новый экземпляр Socket не будет получен. И когда SocketProcessor.start () завершается, старый экземпляр Socket будет забыт.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню