示例#1
0
        static void Main(string[] args)
        {
            // Get the port number.
            ushort port = 4502;

            if (args != null)
            {
                foreach (string arg in args)
                {
                    bool success = ushort.TryParse(arg, out port);
                    if (success)
                    {
                        break;
                    }
                }
            }

            // Set up logging.
            Log.ExceptionDetailsEnabled = true;
            Log.TraceEnabled            = true;

            // Create the socket engine.
            SocketConnection listenSocket = new SocketConnection();

            // Display our version information.
            string assemblyName    = listenSocket.GetType().Assembly.GetName().Name;
            string assemblyVersion = listenSocket.GetType().Assembly.GetName().Version.ToString();

            System.IO.FileInfo assemblyInfo = new System.IO.FileInfo(listenSocket.GetType().Assembly.Location);
            DateTime           assemblyDate = assemblyInfo.LastWriteTime;

            Log.Trace("Running " + assemblyName + " version " + assemblyVersion + " located at " +
                      assemblyInfo + " and created on " + assemblyDate.ToShortDateString() + ".");

            // Initialize sockets, load the database, and run the game.
            System.Net.Sockets.Socket control = listenSocket.InitializeSocket(port);
            Database database = new Database();

            database.LoadDatabase( );

            Log.Trace(String.Format("{0} MUD is now running on port {1}.", Database.SystemData.MudName, port));
            try
            {
                listenSocket.MainGameLoop(control);
            }
            catch (Exception ex)
            {
                Log.Error("Unhandled exception running main game loop: " + ex.ToString());
                control.Close();
                return;
            }
            control.Close();

            // End of game.
            Log.Trace("Normal shutdown of game.");
            return;
        }