-1

コマンドラインから実行する必要がある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. 
    }

}

どんな助けでも大歓迎です!

4

3 に答える 3

6

あなたはそれを渡すことができます:

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);
       ...
    }

条件演算子を使用して、値が渡されない場合にデフォルト ポートを使用するかどうかを決定できます。

于 2013-03-29T13:59:59.787 に答える
3

システム プロパティを使用したさらに別のソリューション:

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

次のコマンド ラインを使用します。

java -Dserver.socket.port=5000 Server

主な利点はInteger.getInteger("server.socket.port")、プロジェクト内のどこからでもアクセスできることです。

于 2013-03-29T14:01:29.503 に答える
1

このような:

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

public Server( int portNumber ) {
    ServerSocket socket = new ServerSocket( portNumber );
}
...
于 2013-03-29T14:00:41.303 に答える