Example #1
0
 public Form1()
 {
     InitializeComponent();
     screenShotListView=null;
     Name="";
     currentHistory=-1;
     commandHistory=new List<string>();
     server=new MessageServer();
     server.NewUserAdded+=OnNewUserAdded;
     server.UserRemoved+=OnUserRemoved;
     server.MessageReceived+=OnMessageReceived;
     server.ScreenShotReceived+=OnScreenShotReceived;
     GetUserColors();
     localAddress=GetLocalIPAddress();
     if(localAddress==null){
         MessageBox.Show("ネットワークに接続していません。","",MessageBoxButtons.OK,MessageBoxIcon.Error);
         Application.Exit();
     }
     server.Start();
     UpdateTitle();
 }
Example #2
0
        private static void Main(string[] args)
        {
            Log.SetLogFile(".\\Logs\\MessageLog.log");

start:
            MessageServer.Clients = new List <Client>();

            Log.Entitle("Message Server v.{0}.{1}", 10, 10);

            try
            {
                Settings.Initialize();

                MessageServer.AutoRestartTime = 15; // TODO: Get actual restart-time.
                Log.Inform("Automatic restart time set to {0} seconds.", MessageServer.AutoRestartTime);

                Database.Test();
                Database.Analyze(false); // NOTE: The shop server uses mcdb for information like items, etcetera.

                MessageServer.RemoteEndPoint = new IPEndPoint(Settings.GetIPAddress("ExternalIP", "Message"), Settings.GetInt("Port", "Message"));

                //MapleData.Initialize();

                MessageServer.Listener = new TcpListener(IPAddress.Any, MessageServer.RemoteEndPoint.Port);
                MessageServer.Listener.Start();
                Log.Inform("Initialized clients listener on {0}.", MessageServer.Listener.LocalEndpoint);

                MessageServer.IsAlive = true;
            }
            catch (Exception e)
            {
#if DEBUG
                Log.Error(e.ToString());
#else
                Log.Error(e);
#endif
            }

            if (MessageServer.IsAlive)
            {
                Log.Success("Server started on thread {0}.", Thread.CurrentThread.ManagedThreadId);

                new Thread(new ThreadStart(InteroperabilityClient.Main)).Start();
            }
            else
            {
                Log.Inform("Could not start server because of errors.");
            }

            while (MessageServer.IsAlive)
            {
                MessageServer.AcceptDone.Reset();

                MessageServer.Listener.BeginAcceptSocket(new AsyncCallback(MessageServer.OnAcceptSocket), null);

                MessageServer.AcceptDone.WaitOne();
            }

            Client[] remainingClients = MessageServer.Clients.ToArray();

            foreach (Client client in remainingClients)
            {
                client.Dispose();
            }

            MessageServer.Dispose();

            Log.Warn("Server stopped.");

            if (MessageServer.AutoRestartTime > 0)
            {
                Log.Inform("Attempting auto-restart in {0} seconds.", MessageServer.AutoRestartTime);

                Thread.Sleep(MessageServer.AutoRestartTime * 1000);

                goto start;
            }
            else
            {
                Console.Read();
            }
        }