У меня есть требование, когда мне нужно одновременно открывать два ServerSockets и постоянно слушать их для своих соответствующих сокетов.
Они работают индивидуально хорошо, но мне нужно с ними работать.
while(true){
Socket socket = serversocket1.accept()
new SocketProcessor(socket).start();
}
while(true){
Socket socket = serversocket2.accept()
new AnotherSocketProcessor(socket).start();
}
Как я могу это сделать?
Вы можете отсылать это отсюда. Вы должны использовать многопоточность....
Прослушивание двух портов одновременно на сервере Java с использованием многопоточности
Вы считали многопоточность?
Во-первых, мы создаем класс, реализующий интерфейс 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 ();