/// <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); }; }
/// <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); }; }