Java: 以端口作为参数启动套接字服务器 class

Java: Start a socket server class with the port as an argument

所以我有一个负载平衡器,当服务器充满客户端时,我想通过将服务器端口作为参数传递来以编程方式创建一个新的多线程服务器。

这就是我尝试启动新服务器实例的方式

int newport = 4001
SMTPserver server = new SMTPserver();
server.SMTPserver(port);

这是我的服务器

public class SMTPserver {
    public static Socket connsock = null;
    public static int port;

//     SMTPserver(int port) {
//        this.port = port;
//    }

    public static void main(String args[]) throws IOException {

        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("Server is running on port " + port);

        while (true) {

            try {

                // accepting client socket
                connsock = serverSocket.accept();
                }
        }
    }
}

我的问题是如何使用 giver 端口参数启动这个服务器?这个代码正确吗?

您将 0 传递给 ServerSocket 构造函数,因此它将选择一个可用端口。如果要使用特定端口,需要传递一个非零端口号。

你可以这样做:

public class SMTPserver {
    public Socket connsock = null;
    public int port;

    public SMTPserver(int port) {
        this.port = port;

        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("Server is running on port " + port);

        while (true) {

            try {

                // accepting client socket
                connsock = serverSocket.accept();
                }
        }
    }
}

请注意,我将端口参数分配给端口字段,然后将其传递给 ServerSocket 构造函数。