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

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

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

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

这是我的服务器

  1. public class SMTPserver {
  2. public static Socket connsock = null;
  3. public static int port;
  4. // SMTPserver(int port) {
  5. // this.port = port;
  6. // }
  7. public static void main(String args[]) throws IOException {
  8. ServerSocket serverSocket = new ServerSocket(port);
  9. System.out.println("Server is running on port " + port);
  10. while (true) {
  11. try {
  12. // accepting client socket
  13. connsock = serverSocket.accept();
  14. }
  15. }
  16. }
  17. }

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

2izufjch

2izufjch1#

您正在将0传递给serversocket构造函数,因此它将选择一个可用端口。如果要使用特定端口,则需要传递非零端口号。
你可以这样做:

  1. public class SMTPserver {
  2. public Socket connsock = null;
  3. public int port;
  4. public SMTPserver(int port) {
  5. this.port = port;
  6. ServerSocket serverSocket = new ServerSocket(port);
  7. System.out.println("Server is running on port " + port);
  8. while (true) {
  9. try {
  10. // accepting client socket
  11. connsock = serverSocket.accept();
  12. }
  13. }
  14. }
  15. }

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

展开查看全部

相关问题