java:以端口作为参数启动一个socket服务器类

vltsax25  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(302)

因此,我有一个负载均衡器,当服务器上满是客户机时,我希望通过将服务器端口作为参数传递,以编程方式创建一个新的多线程服务器。
这就是我如何尝试启动一个新的服务器示例

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 port参数启动这个服务器?这个代码正确吗?

2izufjch

2izufjch1#

您正在将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();
                }
        }
    }
}

注意,我将port参数分配给port字段,然后将其传递给serversocket构造函数。

相关问题