/// <summary>クライアント.ViewModel</summary> public ClientViewModel() { _Model = new Model.ClientModel(); ExecuteCommand = new DelegateCommand( async() => { IsEnabled = false; ErrorMessage = ""; try { // プロセス間通信でサーバに指示を出し、結果を受け取る Result = await _Model.ExecuteServerSideAsync(); CallPropertyChanged(nameof(Result)); } catch { ErrorMessage = "通信エラー発生"; } finally { IsEnabled = true; } }, () => true); }
public void SendMessage(string message, int userID) { Model.ClientModel client = _clients.FirstOrDefault(u => u.UserID == userID); message = message.Trim(); string resultMessage = $"{client.UserName}: {message}"; byte[] buffer = Encoding.UTF8.GetBytes(resultMessage); client?.NetworkStream.Write(buffer); client.NetworkStream.Flush(); }
/// <summary>IPC通信.ViewModel</summary> public ClientViewModel() { _Model = new Model.ClientModel(UpdateProperties, UpdateResult); Results = new ObservableCollection <TimerInfo>(); _Results = new List <TimerInfo>(); ExecuteCommand = new DelegateCommand <string>( (parameter) => { switch (parameter) { case "start": if (!_Model.IsExecuting) { Results.Clear(); CallPropertyChanged(nameof(Results)); ResultsCount = 0; CallPropertyChanged(nameof(ResultsCount)); ResultTime = 0; CallPropertyChanged(nameof(ResultTime)); _Model.IsExecuting = true; _Model.Execute(); } break; case "stop": if (_Model.IsExecuting) { _Model.IsExecuting = false; } break; } }, () => true); }
public override void ExecuteCommand(MessageSocketSession session, SuperWebSocket.SubProtocol.SubRequestInfo requestInfo) { Model.ClientModel clientModel = Access.Auth.AuthClientType(requestInfo.Body); if (clientModel == null) { //Console.WriteLine(String.Format("{0} code error, refuse", session.SessionID)); session.Close(); } else { string privatekey = Careysoft.Basic.Public.FString.GetRandomString(8); session.Cookies.Add("ClientCode", clientModel.ClientCode); session.Cookies.Add("ClientType", clientModel.ClientType.ToString()); session.Cookies.Add("GroupCode", clientModel.GroupCode); session.Cookies.Add("PrivateKey", privatekey); session.Cookies.Add("ConnectTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); session.Send(String.Format("{0} {1}", Model.EnumCommand.AuthAccept, Careysoft.Basic.Public.DES.Encrypt(privatekey, DateTime.Now.AddDays(-1).ToString("yyyyMMdd")))); } }
async private void ReceiveMessages(Model.ClientModel client) { await Task.Run(() => { while (true) { if (client.Token.IsCancellationRequested) { Console.WriteLine("Чтение прервано"); return; } byte[] buffer = new byte[256]; client.NetworkStream.Read(buffer); string message = Encoding.UTF8.GetString(buffer); CallingMessageForAllUsers(message); Task.Delay(10).Wait(); } }); }
public int Connect(string userName, string ip, int port) { Model.ClientModel client = new Model.ClientModel(userName); try { client.TcpClient = new TcpClient(); client.TcpClient.Connect(IPAddress.Parse(ip), port); client.NetworkStream = client.TcpClient.GetStream(); _clients.Add(client); client.CancelTokenSource = new CancellationTokenSource(); client.Token = client.CancelTokenSource.Token; ReceiveMessages(client); return(client.UserID); } catch (Exception) { throw new Exception("Ошибка подключения"); } }