private OperationResult ServerConnect(string method, string servAddress, string streamDir) { ConnectParam connParam = new ConnectParam() { QuoteAddress = servAddress, StreamFolder = streamDir }; byte[] param_data = DataTranslater.Serialize(connParam); byte[] ret_data = null; // Request(method, param_data); if (ret_data != null) { OperationReturn rt = DataTranslater.Deserialize <OperationReturn>(ret_data); return(new OperationResult { Success = rt.Success, ErrorMessage = rt.ErrorMessage }); } else { return new OperationResult { Success = false, ErrorMessage = "Returned data (Connect) is invalid" } }; }
/// <summary> /// 连接服务器异步回调 /// </summary> private void ConnCallBackF(IAsyncResult ar) { StateObject stateObject = (StateObject)ar.AsyncState; try { stateObject.newClient.EndConnect(ar); stateObject.listViewModel.DownName = "连接成功."; ConnectParam connectParam = new ConnectParam(stateObject.newClient); connectParam.bw.Write(stateObject.gameID); //发送游戏ID connectParam.stateObject = stateObject; downViewModel.connectList.Add(connectParam); stateObject.listViewModel.DownName = "准备接收."; ReceiveFileDelegate d = new ReceiveFileDelegate(ReceiveData); d.BeginInvoke(connectParam, new AsyncCallback(CallBackF), null); } catch (Exception ex) { Application.Current.Dispatcher.Invoke(new Action(() => { XWT.MessageBox.Show("未能与服务器取得连接!错误:" + ex.Message, "提示", MessageBoxButton.OK, MessageBoxImage.Error); downViewModel.AllDowns.Remove(stateObject.listViewModel); this.Close(); }), System.Windows.Threading.DispatcherPriority.Normal); } }
public static void ConnectionStrings(ConnectParam _cp) { SqlConnectionStringBuilder connect1 = new SqlConnectionStringBuilder(); connect1.DataSource = _cp.DataSourse; // имя сервера connect1.InitialCatalog = _cp.InitialCatalog; // имя базы данных connect1.IntegratedSecurity = _cp.IntegratedSecurity; //проверка подлинности через авторизацию Windows connect1.AttachDBFilename = _cp.AttachDbFileName; // путь к БД string conf_name = _cp.NameConString; // название строки подключения из app.config ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings[conf_name]; cs = new ConnectionStringSettings(conf_name, connect1.ConnectionString, "System.Data.SqlClient"); System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // Получаем доступ к строкам подключения ConnectionStringsSection csSection = config.ConnectionStrings; // заменяем строку подключения csSection.ConnectionStrings.Remove(cs.Name); csSection.ConnectionStrings.Add(cs); // сохранение файла конфигурации config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); }
private static void CloseConnect() { var res = _server.Disconnect(); Console.WriteLine($"Соединение закрыто: {res.Succes}"); _connectparam = null; _gameparam = null; }
public BaseGameHost(ConnectParam param, string gameCode) { GameServerId = param.GameServerId; Path = param.Path; GameCode = gameCode; if (!string.IsNullOrEmpty(param.GameName)) { GameName = param.GameName; } Password = param.SshPassword; Ip = param.SshIp; Client = new SshClient(param.SshIp, param.SshPort, param.SshUserName, param.SshPassword); }
private static void MonitorStateServer(DataReceivedModel data) { var state = data.ServerStates?.FirstOrDefault(o => o.ParameterName.Equals("ServerOFF")); if (state != null) { //_server.DataReceived -= _server_DataReceived; Console.WriteLine($"Сервер {_connectparam.FamilyGame} остановлен."); _connectparam = null; _server = null; _isWriteCommand = true; WriteCommand(); } state = data.ServerStates?.FirstOrDefault(o => o.ParameterName.Equals("Console")); if (state != null && state.ParameterValue == "Ready") { _isConsoleOpen = true; } state = data.ServerStates?.FirstOrDefault(o => o.ParameterName.Equals("Status")); if (state != null && state.ParameterValue == "Ready") { //CloseConsole(); _isConsoleOpen = false; foreach (var el in data.ServerStates) { Console.WriteLine($"{el.ParameterName} : {el.ParameterValue}"); } Console.Write("|"); foreach (var head in data.TableInfo.Headers) { Console.Write($"{head}\t|"); } Console.Write('\n'); if (data.TableInfo.Values.Any()) { Console.Write("|"); } foreach (var value in data.TableInfo.Values) { Console.Write($"{value}\t|"); } Console.Write('\n'); WriteCommand(); } }
private static ConnectParam LinuxConnecton(GameFamily game) { var res = new ConnectParam { FamilyGame = game, SshIp = LinuxSrvIp, SshPort = 22, //SshUserName = "******", //SshPassword = "******", Path = "/host", //SshPort = 20002, SshUserName = "******", SshPassword = "******", GameServerId = "1002" //Path = "/home/vncuser/host" }; return(res); }
private static void RunServer() { Console.Write(" 1 - Ark \t 2 - Arma3\n 3 - CS\t 4 - CSGO\n 5 - CSS\t 6 - Dod\n 7 - Gmod\t 8 - L4D\n 9 - L4D2\t 10 - Minecraft\n" + " 11 - TF2\t 12 - Bmdm\n 13 - Cscz\t 14 - Cure\n 15 - Insurgency\t 16 - JustCause2\n 17 - Rust\t 18 - Dods\n" + " 19 - Dst\t 20 - DoubleAction\n 21 - FistfulofFrags\t 22 - Hurtworld\n 23 - KillingFloor\t 24 - NS2\n" + " 25 - Nmrih\t 26 - Opfor\n 27 - Pvkii\t 28 - Quake Live\n Выберите игру: "); var key = Console.ReadLine(); _connectparam = GetLinuxConnect(key); if (_connectparam == null) { return; } _server = GameServerFactory.Instance.Get(_connectparam); var res = _server.Connect(); _gameparam = new CreateParam { Slots = 2, GamePort = 27020, GameServerId = _connectparam.GameServerId, GamePassword = "", }; res = _server.Create(_gameparam); if (!res.Succes) { Console.WriteLine($"{res.ErrorMessage}"); } var param = GetChangeStatusParam(); param.TypeStatus = GameHostTypeStatus.Enable; res = _server.ChangeStatus(param); if (!res.Succes) { Console.WriteLine($"{res.ErrorMessage}"); } //_server.DataReceived += _server_DataReceived; //var res = _server.On(_gameparam); //if (res.ServerStates == null) return; //foreach (var param in res.ServerStates) // Console.WriteLine($"{param.ParameterName}: {param.ParameterValue}"); }
public Cs(ConnectParam param, string gameCode = "cstrike") : base(param, gameCode) { GameName = "cs"; }
public Ns2(ConnectParam param) : base(param, "ns2") { GameName = "ns2"; }
public Hw(ConnectParam param) : base(param, "hw") { GameName = "hw"; }
public BaseGameHost(ConnectParam connectParam, string gameCode) { this.GameCode = gameCode; Client = new SshClient(connectParam.SshIp, connectParam.SshPort, connectParam.SshUserName, connectParam.SshPassword); }
public Dab(ConnectParam param) : base(param, "dab") { GameName = "dab"; }
public Dst(ConnectParam param) : base(param, "dst") { GameName = "dst"; }
public CureGame(ConnectParam param) : base(param, "cure") { }
public SAMP(ConnectParam param) : base(param) { }
public Css(ConnectParam param) : base(param) { GameName = "css"; }
public Fof(ConnectParam param) : base(param, "fof") { GameName = "fof"; }
public Ql(ConnectParam param) : base(param, "baseq3") { GameName = "ql"; }
public Arma3(ConnectParam param) : base(param, "arma3") { GameName = "arma3"; }
public Kf(ConnectParam param) : base(param, "System") { GameName = "kf"; }
public L4D2(ConnectParam param) : base(param, "left4dead2") { GameName = "l4d2"; }
private static ConnectParam GetLinuxConnect(string key) { ConnectParam connectparam = null; switch (key) { case "3": connectparam = LinuxConnecton(GameFamily.Cs); break; case "1": connectparam = LinuxConnecton(GameFamily.Ark); break; case "2": connectparam = LinuxConnecton(GameFamily.Arma3); break; case "4": connectparam = LinuxConnecton(GameFamily.CsGo); break; case "5": connectparam = LinuxConnecton(GameFamily.Css); break; case "6": connectparam = LinuxConnecton(GameFamily.Dod); break; case "7": connectparam = LinuxConnecton(GameFamily.GMod); break; case "8": connectparam = LinuxConnecton(GameFamily.L4D); break; case "9": connectparam = LinuxConnecton(GameFamily.L4D2); break; case "10": connectparam = LinuxConnecton(GameFamily.Minecraft); break; case "11": connectparam = LinuxConnecton(GameFamily.T2F); break; case "12": connectparam = LinuxConnecton(GameFamily.Bmdm); break; case "13": connectparam = LinuxConnecton(GameFamily.Cscz); break; case "14": connectparam = LinuxConnecton(GameFamily.Cure); break; case "15": connectparam = LinuxConnecton(GameFamily.Insurgency); break; case "16": connectparam = LinuxConnecton(GameFamily.JustCause2); break; //case "17": // connectparam = LinuxConnecton(GameFamily.Rust); // break; case "18": connectparam = LinuxConnecton(GameFamily.Dods); break; case "19": connectparam = LinuxConnecton(GameFamily.DontStarveTogether); break; case "20": connectparam = LinuxConnecton(GameFamily.DoubleAction); break; case "21": connectparam = LinuxConnecton(GameFamily.FistfulofFrags); break; case "22": connectparam = LinuxConnecton(GameFamily.Hurtworld); break; //case "23": // connectparam = LinuxConnecton(GameFamily.KillingFloor); // break; //case "24": // connectparam = LinuxConnecton(GameFamily.Ns2); // break; case "25": connectparam = LinuxConnecton(GameFamily.Nmrih); break; case "26": connectparam = LinuxConnecton(GameFamily.Opfor); break; case "27": connectparam = LinuxConnecton(GameFamily.Pvkii); break; case "28": connectparam = LinuxConnecton(GameFamily.Ql); break; } return(connectparam); }
/// <summary> /// 接收数据 /// </summary> /// <param name="connectParam">连接参数</param> private void ReceiveData(ConnectParam connectParam) { try { connectParam.stateObject.listViewModel.DownName = connectParam.br.ReadString(); //获取文件名 long downSize = connectParam.br.ReadInt64(); //获取文件大小 connectParam.stateObject.listViewModel.DownSize = ChangeToSize(downSize); //转换为MB string gametime = connectParam.br.ReadString(); //获取版本时间 using (connectParam.fs = new FileStream(connectParam.gamePath + connectParam.stateObject.listViewModel.DownName + ".temp", FileMode.Create)) { byte[] buffer = new byte[connectParam.bufferSize]; connectParam.StartTimer(); //开启计时器 while (connectParam.readL < downSize) { connectParam.size = connectParam.br.Read(buffer, 0, connectParam.bufferSize); connectParam.fs.Write(buffer, 0, connectParam.size); connectParam.readL += connectParam.size; if (connectParam.sec != 0) { long downSpeed = connectParam.readL / connectParam.sec; connectParam.stateObject.listViewModel.DownSpeed = ChangeToSize(downSpeed) + "/S"; //速度 } connectParam.stateObject.listViewModel.DownProgress = String.Format("{0:N1}", (double)connectParam.readL * 100 / downSize); } } if (File.Exists(connectParam.gamePath + connectParam.stateObject.listViewModel.DownName)) { try { File.Delete(connectParam.gamePath + connectParam.stateObject.listViewModel.DownName + ".temp"); } catch { } } else { File.Move(connectParam.gamePath + connectParam.stateObject.listViewModel.DownName + ".temp", connectParam.gamePath + connectParam.stateObject.listViewModel.DownName); } //将游戏ID发到“我的游戏模块” addgame_Aggregator.GetEvent <AddGameMsgEvent>().Publish( new AddGameMsgOrder { GameId = connectParam.stateObject.gameID, GameName = connectParam.stateObject.listViewModel.DownName, GameTime = gametime }); } catch { if (File.Exists(connectParam.gamePath + connectParam.stateObject.listViewModel.DownName + ".temp")) { File.Delete(connectParam.gamePath + connectParam.stateObject.listViewModel.DownName + ".temp"); } } finally { connectParam.StopTimerAndClose(); Application.Current.Dispatcher.Invoke(new Action(() => { downViewModel.AllDowns.Remove(connectParam.stateObject.listViewModel); //下载完成,移除 downViewModel.connectList.RemoveAll(conn => conn.stateObject.gameID == connectParam.stateObject.gameID); }), System.Windows.Threading.DispatcherPriority.Normal); } }
public L4D(ConnectParam param, string gameCode = "left4dead") : base(param, gameCode) { GameName = "l4d"; }
public CsGo(ConnectParam param) : base(param) { GameName = "csgo"; }
public JustCause2(ConnectParam param) : base(param, "jc2") { GameName = "jc2"; _path = param.Path; }
public Gmod(ConnectParam param) : base(param, "garrysmod") { GameName = "gmod"; }
public Minecraft(ConnectParam param) : base(param) { }
public Dod(ConnectParam param) : base(param, "dod") { GameName = "dod"; }