Java:以端口作为参数启动socket服务器类

Java:以端口作为参数启动socket服务器类,java,sockets,server,arguments,Java,Sockets,Server,Arguments,因此,我有一个负载平衡器,当服务器上满是客户端时,我希望通过将服务器端口作为参数传递,以编程方式创建一个新的多线程服务器 这就是我尝试启动新服务器实例的方式 int newport = 4001 SMTPserver server = new SMTPserver(); server.SMTPserver(port); 这是我的服务器 public class SMTPserver { public static Socket connsock = null; public s

因此,我有一个负载平衡器,当服务器上满是客户端时,我希望通过将服务器端口作为参数传递,以编程方式创建一个新的多线程服务器

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

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构造函数。

这似乎不错,但当我尝试在SMTPserver server=new SMTPserver()行启动服务器实例时;类SMTPserver中的i get
构造函数SMTPserver不能应用于给定类型;必需:int found:无参数原因:实际参数列表和形式参数列表长度不同
您需要将端口传递给构造函数,即
server=new SMPTServer(4001)性能谢谢。但是我如何启动这个实例呢?它在构造函数中启动