Пример #1
0
        public void Process()
        {
            name = "aaa";
            NetworkStream stream = null;
            bool          isExit = false;

            try
            {
                stream = TcpClient.GetStream();
                byte[] data = new byte[64]; // буфер для получаемых данных
                while (true)
                {
                    // получаем сообщение
                    StringBuilder builder = new StringBuilder();
                    int           bytes   = 0;
                    do
                    {
                        bytes = stream.Read(data, 0, data.Length);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    }while (stream.DataAvailable);

                    string json = builder.ToString();

                    if (string.IsNullOrEmpty(json))
                    {
                        break;
                    }

                    Package package = Package.FromJson(json);

                    switch (package.Operation)
                    {
                    case (int)OperationManager.Connect:
                    {
                        name = package.Name;
                        LogPrint(package.DateTime, "вход в систему");
                        break;
                    }

                    case (int)OperationManager.GetUsers:
                    {
                        GetUsers(package);
                        LogPrint(package.DateTime, $"получение списка сотрудников");
                        break;
                    }

                    case (int)OperationManager.GetTeams:
                    {
                        GetTeams(package);
                        LogPrint(package.DateTime, $"получение списка команд");
                        break;
                    }

                    case (int)OperationManager.GetUserInfo:
                    {
                        LogPrint(package.DateTime, $"получение лога сотрудника id={package.Data.Split('@')[0]}");
                        GetUserInfo(package);
                        break;
                    }

                    case (int)OperationManager.Exit:
                    {
                        LogPrint(DateTime.Now, "выход из системы");
                        isExit = true;
                        break;
                    }

                    case (int)OperationManager.GetLogsTeam:
                    {
                        LogPrint(package.DateTime, $"получение лога команды id={package.Data.Split('@')[0]}");
                        GetLogsTeam(package);
                        break;
                    }
                    }

                    if (isExit)
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (!isExit)
                {
                    LogPrint(DateTime.Now, "выход из системы (отключение)");
                }
                if (stream != null)
                {
                    stream.Close();
                }
                if (TcpClient != null)
                {
                    TcpClient.Close();
                }
            }
        }
Пример #2
0
        public void Process()
        {
            name = "aaa";
            NetworkStream stream = null;
            bool          isExit = false;

            try
            {
                stream = TcpClient.GetStream();
                byte[] data = new byte[64]; // буфер для получаемых данных
                while (true)
                {
                    // получаем сообщение
                    StringBuilder builder = new StringBuilder();
                    int           bytes   = 0;
                    do
                    {
                        bytes = stream.Read(data, 0, data.Length);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    }while (stream.DataAvailable);

                    string json = builder.ToString();

                    if (string.IsNullOrEmpty(json))
                    {
                        break;
                    }

                    Package package = Package.FromJson(json);

                    AddInfoToDB(package);

                    switch (package.Operation)
                    {
                    case (int)OperationInvoke.Connect:
                    {
                        name = package.Name;
                        LogPrint(package.DateTime, "вход в систему");
                        break;
                    }

                    case (int)OperationInvoke.ChangeProcess:
                    {
                        LogPrint(package.DateTime, $"смена процесса {package.Data}");
                        break;
                    }

                    case (int)OperationInvoke.Exit:
                    {
                        LogPrint(DateTime.Now, "выход из системы");
                        isExit = true;
                        break;
                    }
                    }

                    if (isExit)
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (!isExit)
                {
                    LogPrint(DateTime.Now, "выход из системы (отключение)");
                }
                if (stream != null)
                {
                    stream.Close();
                }
                if (TcpClient != null)
                {
                    TcpClient.Close();
                }
            }
        }