JavaDeveloper
JavaDeveloper

Reputation: 5660

How to deploy 3 instances of a server on localhost?

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

Answers (1)

Dalton Cézane
Dalton Cézane

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

Related Questions