static void GenerateMessages()
        {
            // Генерация сообщений для отправки клиенту
            Random rand = new Random();

            while (true)
            {
                string device_mes = DataWorker.get_surgard();

                if (DataWorker.write_journal(device_mes))
                {
                    sendMessages.Add(DataWorker.make_message());
                    Console.WriteLine("Я записав");
                }
                else
                {
                    Console.WriteLine("Ошибка записи сообщения");
                }
                Thread.Sleep(rand.Next(800, 7000));
            }
        }
Exemplo n.º 2
0
        public static void ReceiveCallback(IAsyncResult ar)
        {
            Thread thr      = Thread.CurrentThread;
            int    idThread = thr.ManagedThreadId;

            string content        = String.Empty;
            Socket client_soc     = (Socket)ar.AsyncState;
            int    lenByteReceive = client_soc.EndReceive(ar);


            if (lenByteReceive > 0)
            {
                content += Encoding.Unicode.GetString(buffer, 0, lenByteReceive);

                if (content.IndexOf(".") > -1)
                {
                    Console.WriteLine("Получено от клиента {0} байт", lenByteReceive);
                    Console.WriteLine("Сообщение: {0}", content);

                    if (content.Remove(content.Length - 1, 1) != "")
                    {
                        string choice = content.Remove(1, content.Length - 1);
                        string data   = content.Substring(1, content.Length - 2);

                        switch (choice)
                        {
                        case "1":
                            try
                            {
                                string[] items     = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                string   newmsg    = DataWorker.Load_Group(items[0]);
                                byte[]   byteSend1 = Encoding.Unicode.GetBytes(newmsg);
                                client_soc.BeginSend(byteSend1, 0, byteSend1.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend1 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend1, 0, byteSend1.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "2":
                            try
                            {
                                string[] items     = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                string   newmsg    = DataWorker.Load_Subject(items[0]);
                                byte[]   byteSend2 = Encoding.Unicode.GetBytes(newmsg);

                                client_soc.BeginSend(byteSend2, 0, byteSend2.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend2 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend2, 0, byteSend2.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "0":
                            try
                            {
                                string[] items     = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                string   newmsg    = DataWorker.Load_Surname(items[0]);
                                byte[]   byteSend0 = Encoding.Unicode.GetBytes(newmsg);
                                // Отправляем сообщение клиенту
                                client_soc.BeginSend(byteSend0, 0, byteSend0.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend0 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend0, 0, byteSend0.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "3":
                            try
                            {
                                string[] items     = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                string   newmsg    = DataWorker.Load_All();
                                byte[]   byteSend2 = Encoding.Unicode.GetBytes(newmsg);

                                client_soc.BeginSend(byteSend2, 0, byteSend2.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend2 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend2, 0, byteSend2.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "7":
                            try
                            {
                                string[] items = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                DataWorker.Add_Record(items[0], items[1], items[2], items[3]);
                                byte[] byteSend3 = Encoding.Unicode.GetBytes("3");
                                client_soc.BeginSend(byteSend3, 0, byteSend3.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend3 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend3, 0, byteSend3.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "4":
                            try
                            {
                                string[] items = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                DataWorker.Delete_Name(items[0]);
                                byte[] byteSend4 = Encoding.Unicode.GetBytes("4");
                                client_soc.BeginSend(byteSend4, 0, byteSend4.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend4 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend4, 0, byteSend4.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "5":
                            try
                            {
                                string[] items = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                DataWorker.Delete_Group(items[0]);
                                byte[] byteSend5 = Encoding.Unicode.GetBytes("5");
                                client_soc.BeginSend(byteSend5, 0, byteSend5.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend5 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend5, 0, byteSend5.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        case "6":
                            try
                            {
                                string[] items = data.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                DataWorker.Delete_Subject(items[0]);
                                byte[] byteSend6 = Encoding.Unicode.GetBytes("6");
                                client_soc.BeginSend(byteSend6, 0, byteSend6.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            catch
                            {
                                byte[] byteSend6 = Encoding.Unicode.GetBytes("error");
                                client_soc.BeginSend(byteSend6, 0, byteSend6.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            }
                            break;

                        default:
                            byte[] byteSend = Encoding.Unicode.GetBytes("error");
                            client_soc.BeginSend(byteSend, 0, byteSend.Length, 0, new AsyncCallback(SendCallback), client_soc);
                            break;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Сообщение пустое");
                    }
                }
                else
                {
                    client_soc.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), client_soc);
                }
            }
        }