コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: ClientController.cs プロジェクト: DimaSpencer/Chat
        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();
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 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"))));
     }
 }
コード例 #5
0
ファイル: ClientController.cs プロジェクト: DimaSpencer/Chat
        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();
                }
            });
        }
コード例 #6
0
ファイル: ClientController.cs プロジェクト: DimaSpencer/Chat
        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("Ошибка подключения");
            }
        }