Beispiel #1
0
        /// <summary>
        /// Обработка запроса
        /// </summary>
        /// <param name="clientobject"></param>
        static void call(object clientobject)
        {
            try
            {
                TcpClient client = clientobject as TcpClient;
                using (NetworkStream stream = client.GetStream())
                {
                    BinaryReader reader = new BinaryReader(stream);
                    BinaryWriter writer = new BinaryWriter(stream);

                    //Принимаем запрос клиента
                    string   query = reader.ReadString();
                    string[] q     = query.Split('☺');

                    if (query == "Ping")
                    {
                        writer.Write("Pong");
                    }
                    if (query == "Сompatibility")
                    {
                        writer.Write(VersionForComp);
                    }
                    if (query == "Log")
                    {
                        Log(reader.ReadString());
                    }
                    if (query == "MessageRead")
                    {
                        writer.Write(Message);
                    }
                    if (query == "MessageWrite")
                    {
                        Message = reader.ReadString();
                        try
                        {
                            File.WriteAllText(MessageFile, Message);
                        }
                        catch { };
                    }
                    if (q[0] == "LineRead")
                    {
                        Line line = lines.Find(o => o.name == q[1]);
                        if (line != null)
                        {
                            writer.Write(line.ToSend());
                        }
                        else
                        {
                            writer.Write("☺☺☺☺☺☺☺☺☺☺☺");
                        }
                    }
                    if (q[0] == "LineWrite")
                    {
                        Line line = lines.Find(o => o.name == q[1]);
                        if (line == null)
                        {
                            line = new Line();
                            lines.Add(line);
                        }
                        line.Input(query.Substring(10, query.Length - 10));
                        SaveLines();
                    }
                    if (query == "ShiftRead")
                    {
                        for (int i = 0; i < ShiftStrings; i++)
                        {
                            if (Shift[i] != null)
                            {
                                writer.Write(Shift[i]);
                            }
                            else
                            {
                                writer.Write("");
                            }
                        }
                    }
                    if (query == "ShiftWrite")
                    {
                        for (int i = 0; i < ShiftStrings; i++)
                        {
                            Shift[i] = reader.ReadString();
                        }
                        SaveShift();
                    }
                    if (query == "UsersRead")
                    {
                        writer.Write(Users.Count);
                        Users.ForEach(u => writer.Write(u));
                    }
                    if (query == "UsersWrite")
                    {
                        Users.Clear();
                        string s;
                        do
                        {
                            s = reader.ReadString();
                            if (s != "End")
                            {
                                Users.Add(s);
                            }
                        } while (s != "End");
                        SaveUsers();
                    }
                    if (query == "LogRecord")
                    {
                        Directory.CreateDirectory("Logs");
                        using (StreamWriter file = new StreamWriter("Logs\\" + reader.ReadString() + ".csv",
                                                                    true, Encoding.Default))
                            file.WriteLine(reader.ReadString());
                    }
                    if (query == "LogRead")
                    {
                        using (StreamReader file = new StreamReader("Logs\\" + reader.ReadString() + ".csv",
                                                                    Encoding.Default))
                        {
                            string s;
                            do
                            {
                                s = file.ReadLine();
                                if (s != null)
                                {
                                    writer.Write(s);
                                }
                            } while (s != null);
                            writer.Write("End");
                        }
                    }
                    if (query == "LogWrite")
                    {
                        using (StreamWriter file = new StreamWriter("Logs\\" + reader.ReadString() + ".csv",
                                                                    false, Encoding.Default))
                        {
                            string s;
                            do
                            {
                                s = reader.ReadString();
                                if (s != "End")
                                {
                                    file.WriteLine(s);
                                }
                            } while (s != "End");
                        }
                    }
                    if (query == "ListRead")
                    {
                        string name = reader.ReadString();
                        //Ищем нужный список
                        DropList List = DropLists.Find(o => o.Name == name);
                        //Если его нет - создаём
                        if (List == null)
                        {
                            List = new DropList(name);
                        }
                        DropLists.Add(List);
                        //А дальше уже отдаём старый или новый
                        List.List.ForEach(o => writer.Write(o));
                        writer.Write("End");
                    }
                    if (query == "ListWrite")
                    {
                        string name = reader.ReadString();
                        //Ищем нужный список
                        DropList List = DropLists.Find(o => o.Name == name);
                        //Если его нет - создаём
                        if (List == null)
                        {
                            List = new DropList(name);
                        }
                        DropLists.Add(List);
                        //если такого списка нет - добавляем новый, а потом сохраняем его в файл
                        List.List.Clear();
                        string s;
                        do
                        {
                            s = reader.ReadString();
                            if (s != "End")
                            {
                                List.List.Add(s);
                            }
                        } while (s != "End");
                        List.Save();
                    }
                    if (query == "StatWrite")
                    {
                        AddStat(reader.ReadString());
                    }
                    if (query == "StatRead")
                    {
                        Stats.Sort(delegate(Stat s1, Stat s2) { return(s2.Num.CompareTo(s1.Num)); });
                        int sum = 0;
                        foreach (Stat s in Stats)
                        {
                            writer.Write(s.Name);
                            writer.Write(s.Num);
                            sum += s.Num;
                        }
                        writer.Write("Всего");
                        writer.Write(sum);
                        writer.Write("End");
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            };
        }
Beispiel #2
0
        /// <summary>
        /// Обработка запроса
        /// </summary>
        /// <param name="clientobject"></param>
        static void call(object clientobject)
        {
            try
            {
                TcpClient client = clientobject as TcpClient;
                using (NetworkStream stream = client.GetStream())
                {
                    BinaryReader reader = new BinaryReader(stream);
                    BinaryWriter writer = new BinaryWriter(stream);
                    //Принимаем запрос клиента
                    string query = reader.ReadString();
                    if (query == "Ping")
                        writer.Write("Pong");
                    if (query == "Сompatibility")
                        writer.Write(VersionForComp);
                    if (query == "Log")
                        Log(reader.ReadString());
                    if (query == "MessageRead")
                        writer.Write(Message);
                    if (query == "MessageWrite")
                    {
                        Message = reader.ReadString();
                        try
                        {
                            File.WriteAllText(MessageFile, Message);
                        }
                        catch { };
                    }
                    if (query == "TPARead")
                    {
                        string name = reader.ReadString();
                        int ind = TPA.FindIndex(tpa => tpa[0] == name);
                        if (ind >= 0) for (int i = 1; i < 20; i++) writer.Write(TPA[ind][i]);
                        else for (int i = 1; i < 20; i++) writer.Write("");
                    }
                    if (query == "TPAWrite")
                    {
                        string name = reader.ReadString();
                        int ind = TPA.FindIndex(tpa => tpa[0] == name);
                        if (ind == -1)
                        {
                            TPA.Add(new string[20]);
                            ind = TPA.Count - 1;
                        }
                        TPA[ind][0] = name;
                        for (int i = 1; i < 20; i++) TPA[ind][i] = reader.ReadString();
                        SaveTPA();
                    }
                    if (query == "ShiftRead")
                    {
                        for (int i = 0; i < ShiftStrings; i++)
                        {
                            if (Shift[i] != null) writer.Write(Shift[i]);
                            else writer.Write("");
                        }
                    }
                    if (query == "ShiftWrite")
                    {
                        for (int i = 0; i < ShiftStrings; i++)
                            Shift[i] = reader.ReadString();
                        SaveShift();
                    }
                    if (query == "UsersRead")
                    {
                        writer.Write(Users.Count);
                        Users.ForEach(u => writer.Write(u));
                    }
                    if (query == "UsersWrite")
                    {
                        Users.Clear();
                        string s;
                        do
                        {
                            s = reader.ReadString();
                            if (s != "End") Users.Add(s);
                        } while (s != "End");
                        SaveUsers();
                    }
                    if (query == "LogRecord")
                    {
                        Directory.CreateDirectory("Logs");
                        using (StreamWriter file = new StreamWriter("Logs\\" + reader.ReadString() + ".csv",
                            true, Encoding.Default))
                            file.WriteLine(reader.ReadString());
                    }
                    if (query == "LogRead")
                    {
                        using (StreamReader file = new StreamReader("Logs\\" + reader.ReadString() + ".csv",
                            Encoding.Default))

                        {
                            string s;
                            do
                            {
                                s = file.ReadLine();
                                if (s != null) writer.Write(s);
                            } while (s != null);
                            writer.Write("End");
                        }
                    }
                    if (query == "LogWrite")
                    {
                        using (StreamWriter file = new StreamWriter("Logs\\" + reader.ReadString() + ".csv",
                            false, Encoding.Default))
                        {
                            string s;
                            do
                            {
                                s = reader.ReadString();
                                if (s != "End") file.WriteLine(s);
                            } while (s != "End");
                        }
                    }
                    if (query == "ListRead")
                    {
                        string name = reader.ReadString();
                        //Ищем нужный список
                        DropList List = DropLists.Find(o => o.Name == name);
                        //Если его нет - создаём
                        if (List == null) List = new DropList(name);
                        DropLists.Add(List);
                        //А дальше уже отдаём старый или новый
                        List.List.ForEach(o => writer.Write(o));
                        writer.Write("End");
                    }
                    if (query == "ListWrite")
                    {
                        string name = reader.ReadString();
                        //Ищем нужный список
                        DropList List = DropLists.Find(o => o.Name == name);
                        //Если его нет - создаём
                        if (List == null) List = new DropList(name);
                        DropLists.Add(List);
                        //если такого списка нет - добавляем новый, а потом сохраняем его в файл
                        List.List.Clear();
                        string s;
                        do
                        {
                            s = reader.ReadString();
                            if (s != "End") List.List.Add(s);
                        } while (s != "End");
                        List.Save();
                    }
                    if (query == "StatWrite")
                    {
                        AddStat(reader.ReadString());
                    }
                    if (query == "StatRead")
                    {
                        Stats.Sort(delegate (Stat s1, Stat s2) { return s2.Num.CompareTo(s1.Num); });
                        int sum = 0;
                        foreach (Stat s in Stats)
                        {
                            writer.Write(s.Name);
                            writer.Write(s.Num);
                            sum += s.Num;
                        }
                        writer.Write("Всего");
                        writer.Write(sum);
                        writer.Write("End");
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            };
        }