我正在编写一个必须通过命令行运行的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.
}
}
非常感谢任何帮助!
答案 0 :(得分: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);
...
}
您可以使用conditional operator来确定在没有传入值的情况下是否应使用默认端口。
答案 1 :(得分:3)
另一种使用系统属性的解决方案:
ServerSocket socket = new ServerSocket(Integer.getInteger("server.socket.port"));
使用以下命令行:
java -Dserver.socket.port=5000 Server
主要优点是可以在项目的任何其他位置访问Integer.getInteger("server.socket.port")
。
答案 2 :(得分:1)
像这样:
...
public static void main( String[] args ) {
Server server = new Server( Integer.parseInt( args[0] ) );
}
public Server( int portNumber ) {
ServerSocket socket = new ServerSocket( portNumber );
}
...