如何在localhost上部署3个服务器实例?

时间:2017-07-22 18:58:25

标签: java sockets server

下面是我将在本地主机上生成服务器的代码。 但是,我想在端口5000,6000,7000上运行3个服务器代码实例。 我可以考虑创建3个.java文件,每个文件使用不同的端口号进行硬编码。 但有没有更好的方法在localhost上生成3个服务器实例而不删除拷贝粘贴3个文件?

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());
    }

}

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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());
}

}

现在,请致电:

startServer(5000);
startServer(6000);
startServer(7000);

或者,甚至更好:使用循环启动服务器三次。