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(); } }
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; } }
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( "新的更新服务器已成功启动"); }