Exemple #1
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            int index = 0;

            while (index < _ServerList.Count)
            {
                RunServerInfo serverInfo = _ServerList[index];

                if (serverInfo._ProcessInfo.HasExited == true)
                {
                    _ServerList.Remove(serverInfo);
                    _UpdateServerList = true;
                    continue;
                }
                index++;
            }

            if (_UpdateServerList == true)
            {
                _UpdateServerList = false;
                RefreshView();
            }
        }
Exemple #2
0
        public void NotifyOccured(NotifyType notifyType, Socket socket, BaseInfo baseInfo)
        {
            Server server = Server.GetInstance();

            switch (notifyType)
            {
            case NotifyType.Request_Server:
            {
                if (_ServerList.Count == 0)
                {
                    buttonUpdate_Click(null, null);

                    if (_ServerList.Count == 0)
                    {
                        ResultInfo resultInfo = new ResultInfo();
                        resultInfo.ErrorType = ErrorType.Notrespond_Server;

                        server.Send(socket, NotifyType.Reply_Error, resultInfo);
                        return;
                    }
                }
                RunServerInfo runServer = _ServerList[_ServerList.Count - 1];
                runServer._LoginCount++;

                ServerInfo serverInfo = new ServerInfo();

                serverInfo.ServerPort      = runServer._ServerPort;
                serverInfo.DownloadAddress = runServer._DownloadFolder;

                server.Send(socket, NotifyType.Reply_Server, serverInfo);

                _UpdateServerList = true;
            }
            break;
            }
        }
Exemple #3
0
        private void buttonUpdate_Click(object sender, EventArgs e)
        {
            if (textBoxSourcePath.Text.Trim().Length == 0 ||
                textBoxTargetPath.Text.Trim().Length == 0)
            {
                MessageBox.Show("请输入路径.");
                return;
            }

            if (Directory.Exists(textBoxSourcePath.Text) == false ||
                Directory.Exists(textBoxTargetPath.Text) == false)
            {
                MessageBox.Show("不正确的路径");
                return;
            }

            DateTime curTime      = DateTime.Now;
            string   newFolder    = string.Format("{0}-{1}-{2}-{3}-{4}-{5}", curTime.Year, curTime.Month, curTime.Day, curTime.Hour, curTime.Minute, curTime.Second);
            string   targetFolder = string.Format("{0}\\{1}", textBoxTargetPath.Text, newFolder);

            if (Directory.CreateDirectory(targetFolder) == null)
            {
                MessageBox.Show("无法创建新的运行路径");
                return;
            }

            try
            {
                CopyFolder(textBoxSourcePath.Text, targetFolder);

                Process processInfo = RunServer(targetFolder);

                if (processInfo == null)
                {
                    return;
                }

                int serverPort = _StartPort;

                while (true)
                {
                    bool foundPort = false;

                    foreach (RunServerInfo runInfo in _ServerList)
                    {
                        if (runInfo._ServerPort == serverPort)
                        {
                            foundPort = true;
                            break;
                        }
                    }

                    if (foundPort == false)
                    {
                        break;
                    }

                    serverPort++;
                }

                IniFileEdit iniFile = new IniFileEdit(targetFolder + "\\Config.ini");
                iniFile.SetIniValue("Chatting", "TcpPort", serverPort.ToString());
                iniFile.SetIniValue("Download", "Folder", textBoxDownloadPath.Text);

                if (_ServerList.Count > 0)
                {
                    RunServerInfo oldServerInfo = _ServerList[_ServerList.Count - 1];

                    Client client = new Client(null);
                    if (client.Connect("127.0.0.1", oldServerInfo._ServerPort.ToString(), ProtocolType.Tcp) == true)
                    {
                        ResultInfo resultInfo = new ResultInfo();
                        client.Send(NotifyType.Notify_OldServer, resultInfo);
                    }
                }

                RunServerInfo serverInfo = new RunServerInfo();

                serverInfo._StarTime       = curTime;
                serverInfo._RunFolder      = newFolder;
                serverInfo._DownloadFolder = textBoxDownloadPath.Text;
                serverInfo._ServerPort     = serverPort;
                serverInfo._ProcessInfo    = processInfo;

                _ServerList.Add(serverInfo);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return;
            }

            _UpdateServerList = true;
            //MessageBox.Show( "新的更新服务器已成功启动");
        }