Reputation: 5660
Below is the code I will run to spawn a server on my localhost. However I want 3 instances of server code to run on ports 5000, 6000, 7000. I can think of creating 3 .java files each hard coded with different port number. But is there a better way to spawn 3 server instances on localhost without cut copy pasting 3 files ?
public void startServer() {
try {
ServerSocket welcomeSocket = new ServerSocket(5000);
while (true) {
// Create the Client Socket
Socket clientSocket = welcomeSocket.accept();
ObjectInputStream inFromClient = new ObjectInputStream(clientSocket.getInputStream());
Message m = (Message) inFromClient.readObject();
System.out.println("---- hello: my message is: " + m.name);
}
} catch (Exception e) {
System.err.println("Server Error: " + e.getMessage());
System.err.println("Localized: " + e.getLocalizedMessage());
System.err.println("Stack Trace: " + e.getStackTrace());
System.err.println("To String: " + e.toString());
}
}
Upvotes: 0
Views: 35
Reputation: 3782
You can do this:
public void startServer(int port) {
try {
ServerSocket welcomeSocket = new ServerSocket(port);
while (true) {
// Create the Client Socket
Socket clientSocket = welcomeSocket.accept();
ObjectInputStream inFromClient = new ObjectInputStream(clientSocket.getInputStream());
Message m = (Message) inFromClient.readObject();
System.out.println("---- hello: my message is: " + m.name);
}
} catch (Exception e) {
System.err.println("Server Error: " + e.getMessage());
System.err.println("Localized: " + e.getLocalizedMessage());
System.err.println("Stack Trace: " + e.getStackTrace());
System.err.println("To String: " + e.toString());
}
}
And now, just call:
startServer(5000);
startServer(6000);
startServer(7000);
Or, even better: use a loop to start the servers three times.
Upvotes: 1