【问题标题】:Passing command line java program arguments传递命令行 java 程序参数
【发布时间】:2014-12-07 07:18:41
【问题描述】:

我正在编写一个必须通过命令行运行的 java 服务器。我想向服务器传递不同的端口号来监听。但是,我不确定在运行服务器时如何将端口号作为命令行参数传递给 ServerSocket 类。

public class Server {

    public static void main(String[] args) {
        Server server = new Server();
    }

    public Server() {
        ServerSocket socket = new ServerSocket(5000);
        // I want to specify the port number above as an argument when running the server. 
    }

}

任何帮助将不胜感激!

【问题讨论】:

  • 接受构造函数的参数...
  • 这就是String[] args .....

标签: java command-line-arguments


【解决方案1】:

你可以直接传入:

public class Server {

    private static final int DEFAULT_PORT = 5000;

    public static void main(String[] args) {
        int port = args.length > 0? Integer.parseInt(args[0]): DEFAULT_PORT;
        Server server = new Server(port);
    }

    public Server(int port) {
       ServerSocket socket = new ServerSocket(port);
       ...
    }

您可以使用conditional operator 来确定在没有传入值的情况下是否应使用默认端口。

【讨论】:

    【解决方案2】:

    另一个使用系统属性的解决方案:

    ServerSocket socket = new ServerSocket(Integer.getInteger("server.socket.port"));
    

    使用以下命令行:

    java -Dserver.socket.port=5000 Server
    

    主要优点是Integer.getInteger("server.socket.port") 可以在您项目中的其他任何地方访问。

    【讨论】:

      【解决方案3】:

      像这样:

      ...
      public static void main( String[] args ) {
          Server server = new Server( Integer.parseInt( args[0] ) );
      }
      
      public Server( int portNumber ) {
          ServerSocket socket = new ServerSocket( portNumber );
      }
      ...
      

      【讨论】:

        猜你喜欢
        • 2011-03-29
        • 2012-06-25
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多