⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dedicatedserver.java

📁 MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight
💻 JAVA
字号:
/* * MegaMek - Copyright (C) 2005 Ben Mazur (bmazur@sev.org) * *  This program is free software; you can redistribute it and/or modify it *  under the terms of the GNU General Public License as published by the Free *  Software Foundation; either version 2 of the License, or (at your option) *  any later version. * *  This program is distributed in the hope that it will be useful, but *  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *  for more details. */package megamek.server;import java.io.File;import java.io.IOException;import megamek.common.preference.PreferenceManager;import megamek.common.util.AbstractCommandLineParser;public class DedicatedServer {    private static final String INCORRECT_ARGUMENTS_MESSAGE = "Incorrect arguments:";    private static final String ARGUMENTS_DESCRIPTION_MESSAGE = "Arguments syntax:\n\t [-port <port>] [<saved game>]";    public static void start(String[] args) {        CommandLineParser cp = new CommandLineParser(args);        try {            cp.parse();             String savegameFileName = cp.getGameFilename();            int usePort;            if (cp.getPort()!= -1) {                usePort = cp.getPort();              } else {                usePort = PreferenceManager.getClientPreferences().getLastServerPort();                            }            // kick off a RNG check            megamek.common.Compute.d6();            // start server            Server dedicated;            try {                dedicated = new Server(PreferenceManager.getClientPreferences().getLastServerPass(),usePort);            } catch(IOException ex) {                StringBuffer error = new StringBuffer();                error.append("Error: could not start server at localhost")                    .append(":").append(usePort).append(" (").append(ex.getMessage()).append(").");                System.err.println(error.toString());                return;            }            if (null != savegameFileName) {                dedicated.loadGame(new File(savegameFileName));            }            return;                    } catch (AbstractCommandLineParser.ParseException e) {            StringBuffer message = new StringBuffer(INCORRECT_ARGUMENTS_MESSAGE).append(e.getMessage()).append('\n');            message.append(ARGUMENTS_DESCRIPTION_MESSAGE);            displayMessage(message.toString());                            }    }    public static void main(String[] args) {        start(args);    }    private static void displayMessage(String message) {        System.out.println(message);        System.out.flush();    }    private static class CommandLineParser extends AbstractCommandLineParser {        private String gameFilename;        private int port;        //Options        private static final String OPTION_PORT = "port"; //$NON-NLS-1$        public CommandLineParser(String[] args) {            super(args);        }                /**         * Returns the port option value or <code>-1</code> if         * it wasn't set         * @return port option value or <code>-1</code> if         * it wasn't set         */        public int getPort() {            return port;        }        /**         * Returns the game file name option value or <code>null</code> if         * it wasn't set         * @return the game file name option value or <code>null</code> if         * it wasn't set         */        public String getGameFilename() {            return gameFilename;        }        protected void start() throws ParseException {            if (getToken() == TOK_OPTION && getTokenValue().equals(OPTION_PORT)) {                nextToken();                parsePort();            }            if (getToken() == TOK_LITERAL) {                gameFilename = getTokenValue();                nextToken();            }            if (getToken() != TOK_EOF) {                error("unexpected input"); //$NON-NLS-1$            }        }        private void parsePort() throws ParseException {            if (getToken() == TOK_LITERAL) {                int port = -1;                try {                    port = Integer.decode(getTokenValue()).intValue();                                    } catch (NumberFormatException e) {                                    }                nextToken();                if (port < 0 || port > 65535) {                    error("invalid port number"); //$NON-NLS-1$                                                    }                this.port = port;            } else {                error("port number expected"); //$NON-NLS-1$                            }        }    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -