Сценарий:
а) Постоянные соединения
б) управлять каждым сервером-связи клиента в отдельности
с) Защита системы от распространяющихся исключений/ошибок
Как запустить два экземпляра java-сокетов, прослушивающих два разных порта?
Я пытался созданных два экземпляра сокета сервера слушателей с использованием следующий код:
SimpleSocketServers.java
public class SimpleSocketServers {
public static void main(String[] args) throws Exception {
int port1 = 9876;
SimpleSocketServer server1 = new SimpleSocketServer(port1);
server1.startAndRunServer();
System.out.println("Servers : server1 Listening on port: " + port1);
int port2 = 9875;
SimpleSocketServer server2 = new SimpleSocketServer(port2);
server2.startAndRunServer();
System.out.println("Servers : server2 Listening on port: " + port2);
}
}
и
SimpleSocketServer.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleSocketServer {
private ServerSocket serverSocket;
private int port;
public SimpleSocketServer(int port) {
this.port = port;
}
public void startAndRunServer() {
try {
System.out.println("Starting Server at port " + port + " ...");
serverSocket = new ServerSocket(port);
System.out.println("Listening for client connection ...");
Socket socket = serverSocket.accept();
RequestHandler requestHandler = new RequestHandler(socket);
requestHandler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class RequestHandler extends Thread {
private Socket socket;
RequestHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
System.out.println("Client Request Response being processed...");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Но, это создает только один экземпляр в качестве контроля не возвращается из конструктора первой инстанции. Есть ли возможность восстановить контроль и одновременно запустить оба экземпляра прослушивателей серверных сокетов? (ps: Прошу прощения, если это неправильно или тривиально!)
Вы не можете изолировать клиентов или проблемы со связью при работе с тем же кодом на обоих портах. Я ожидал, что любой компетентный программист сможет включить этот ответ в код. Это не бесплатный сервис кодирования. – EJP
Мне интересно, понимаете ли вы, что вы можете принимать несколько подключений через один и тот же прослушивающий сокет. Вот как работают все TCP-серверы, и именно поэтому я упомянул цикл accept. – EJP