// обработка сообщений от сервера об очистке экрана
 private void OnServiceMessage(object sender, IncommingMessageEventArgs <ServiceMessage> e)
 {
     if (e.Message.Command == Command.CleanScreen)
     {
         clear();
     }
 }
        private void RecieveMessageListener(IncommingMessageEventArgs e)
        {
            MethodInvoker myMethod =
                new MethodInvoker(delegate
            {
                //clear connected message if haven't alread
                if (!clearedConectionMessage)
                {
                    textBoxConversation.Clear();
                    clearedConectionMessage = true;
                }

                //check if connection is active
                if (e.Connected)
                {
                    string textBoxOutput     = e.Message + Environment.NewLine + textBoxConversation.Text;
                    textBoxConversation.Text = textBoxOutput;
                }
                else
                {
                    textBoxConversation.Text = "**Server Disconnected" + Environment.NewLine + textBoxConversation.Text;
                }
            });



            textBoxConversation.Invoke(myMethod);

            //  textBoxConversation.Text = e.Message;
        }
 //Обработка получения сообщения (вопроса) от сервера
 private void OnIncomingQuestion(object sender, IncommingMessageEventArgs <Question> e)
 {
     if (e.Message.Answer == null)
     {
         maxQuestionNumber = Convert.ToInt32(e.Message.Text);
     }
     SetQuestion(e);
 }
示例#4
0
 void RecieveMessageListener(IncommingMessageEventArgs e)
 {
     if (e.Connected)
     {
         Console.WriteLine(e.Message);
     }
     else
     {
         Console.WriteLine("**Client disconnected, chat session over");
         Console.WriteLine("**Press any key to exit");
         endSession = true;
         //  recieveMessageTread.Join();
     }
 }
        /// <summary>
        /// Устанавливает параметры вопроса, пришедшего от сервера, в соответствующие поля формы
        /// </summary>
        /// <param name="e"> Сообщение типа "Вопрос" </param>
        private void SetQuestion(IncommingMessageEventArgs <Question> e)
        {
            if (this.QuestionTitleLabel.InvokeRequired)
            {
                Invoke(new MethodInvoker(delegate() {
                    SetQuestion(e);
                }));
            }
            else
            {
                NumQuestion++;
                NumLabel.Text = "Вопрос " + NumQuestion;

                QuestionTitleLabel.Text = e.Message.Text;
                _answer = e.Message.Answer;

                radioButton1.Text    = e.Message.Var1;
                radioButton1.Checked = false;
                radioButton2.Text    = e.Message.Var2;
                radioButton2.Checked = false;

                if (e.Message.Var3 == null || e.Message.Var3 == "")
                {
                    radioButton3.Visible = false;
                }
                else
                {
                    radioButton3.Visible = true;
                    radioButton3.Text    = e.Message.Var3;
                    radioButton3.Checked = false;
                }

                if (e.Message.Var4 == null || e.Message.Var4 == "")
                {
                    radioButton4.Visible = false;
                }
                else
                {
                    radioButton4.Visible = true;
                    radioButton4.Text    = e.Message.Var4;
                    radioButton4.Checked = false;
                }
            }
        }
        private static void OnServiceMessage(object sender, IncommingMessageEventArgs <Lines> e)
        {
            // если такого клиента, который прислал линию, ещё нет в списке, добавить его в список
            if (!_clientList.Contains(e.Sender.Address))
            {
                _clientList.Add(e.Sender.Address);
            }
            // для каждого клиента в списке подключенных (потом вместо списка можно использовать БД)
            foreach (var client in _clientList)
            {
                //_client.Dispose();
                _client = NetworkingFactory.UdpWriter <Lines>(client, 9090);
                var msg = new Lines(e.Message.PrPoint(), e.Message.CurtPoint(), e.Message.pen());
                // для графического объекта вызываем стандартную функцию рисования линии с аргументами, полученными от клиента
                g.DrawLine(e.Message.pen(), e.Message.CurtPoint(), e.Message.PrPoint());

                _client.Write(msg);
                _client.Dispose();
            }
        }
        // обработчик события "появилась линия"
        private void OnLinesMessage(object sender, IncommingMessageEventArgs <Lines> e)
        {
            // если такого клиента, который прислал линию, ещё нет в списке, добавить его в список
            if (!_clientList.Contains(e.Sender.Address))
            {
                _clientList.Add(e.Sender.Address);
            }
            // для каждого клиента в списке подключенных (потом вместо списка можно использовать БД)
            foreach (var client in _clientList)
            {
                _client_line = NetworkingFactory.UdpWriter <Lines>(client, Ports.LineServerPort);
                var msg = new Lines(e.Message.PrPoint(), e.Message.CurtPoint(), e.Message.pen());

                // передать информацию о линии всем клиентам
                _client_line.Write(msg);
                _client_line.Dispose();
            }

            try
            {
                Monitor.Enter(panel1);
                Graphics G = Graphics.FromImage(pic);
                foreach (var line in linesList)
                {
                    G.DrawLine(line.pen(), line.CurtPoint(), line.PrPoint());
                }
                linesList = new List <Lines>();

                G.DrawLine(e.Message.pen(), e.Message.CurtPoint(), e.Message.PrPoint());
                G.Dispose();
            }
            catch
            {
                linesList.Add(e.Message);
            }
            finally
            {
                Monitor.Exit(panel1);
            }
        }
        // обработчик события "очистка экрана"
        private void OnServiceMessage(object sender, IncommingMessageEventArgs <ServiceMessage> e)
        {
            // если такого клиента, который прислал линию, ещё нет в списке, добавить его в список
            if (!_clientList.Contains(e.Sender.Address))
            {
                _clientList.Add(e.Sender.Address);
            }

            if (e.Message.Command == Command.CleanScreen)
            {
                //для каждого клиента в списке подключенных
                foreach (var client in _clientList)
                {
                    _client = NetworkingFactory.UdpWriter <ServiceMessage>(client, Ports.SMServerPort);
                    var msg = new ServiceMessage(Command.CleanScreen);
                    linesList = new List <Lines>();
                    clear();

                    _client.Write(msg);
                    _client.Dispose();
                }
            }
            else if (e.Message.Command == Command.GetPic)
            {
                try
                {
                    Monitor.Enter(panel1);
                    Monitor.Enter(pic);
                    _client_pictures = NetworkingFactory.UdpWriter <Pictures>(e.Sender.Address, Ports.PictPort);
                    var msg = new Pictures(pic);
                    _client_pictures.Write(msg);
                }
                finally
                {
                    Monitor.Exit(panel1);
                    Monitor.Exit(pic);
                }
            }
        }
 // обработка сообщений от сервера об установке картинки
 private void OnPicturesMessage(object sender, IncommingMessageEventArgs <Pictures> e)
 {
     draw_Picture(e.Message.pic);
 }
 // обработка сообщений от сервера о линиях
 private void OnLinesMessage(object sender, IncommingMessageEventArgs <Lines> e)
 {
     draw_Line(e.Message.pen(), e.Message.CurtPoint(), e.Message.PrPoint());
 }
示例#11
0
        //Обработка сообщения пришедшего на сервер
        private static void OnServiceMessage(object sender, IncommingMessageEventArgs <ServiceMessage> e)
        {
            if (e != null && e.Message.Command == Command.CountQuestions)
            {
                //Обработка запроса об общем количестве вопросов, хранящихся в базе
                string connectionString = GetConnectionString();
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();

                    int    maxQuestionNumber;
                    string query = @"SELECT COUNT(*) cnt FROM [QUESTIONS]";
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        maxQuestionNumber = Convert.ToInt32(command.ExecuteScalar());

                        using (var writer = NetworkingFactory.UdpWriter <Question>(e.Sender.Address, 9091))
                        {
                            var info = new Question(Convert.ToString(maxQuestionNumber), null, null, null, null, null);
                            writer.Write(info);
                        }
                    }
                }
            }
            else if (e != null && e.Message.Command == Command.NextQuestion)
            {
                //обработка запроса следующего вопроса
                string connectionString = GetConnectionString();
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    string query = @"SELECT text, answer, var1, var2, var3, var4 FROM [QUESTIONS] WHERE id = @Id";//+ e.Message.Num;
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        command.Parameters.AddWithValue("@Id", SqlDbType.Int);
                        command.Parameters["@Id"].Value = e.Message.Num;
                        using (SqlDataReader reader = command.ExecuteReader())
                        {
                            reader.Read();
                            int    columnId = reader.GetOrdinal("text");
                            string text     = reader.GetString(columnId);

                            columnId = reader.GetOrdinal("answer");
                            string answer = reader.GetString(columnId);
                            //
                            columnId = reader.GetOrdinal("var1");
                            string var1 = reader.GetString(columnId);

                            columnId = reader.GetOrdinal("var2");
                            string var2 = reader.GetString(columnId);

                            columnId = reader.GetOrdinal("var3");
                            string var3 = reader.GetString(columnId);

                            columnId = reader.GetOrdinal("var4");
                            string var4 = reader.GetString(columnId);
                            //
                            using (var writer = NetworkingFactory.UdpWriter <Question>(e.Sender.Address, 9090))
                            {
                                var info = new Question(text, answer, var1, var2, var3, var4);
                                writer.Write(info);
                            }
                        }
                    }
                }
            }
            else if (e != null && e.Message.Command == Command.AddQuestion)
            {
                //обработка запроса добавления нового вопроса в базу
                string connectionString = GetConnectionString();
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();

                    SqlCommand command = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandText = @"INSERT INTO Questions VALUES (@Id, @Text, @Answer, @Var1, @Var2, @Var3, @Var4)";

                    command.Parameters.AddWithValue("@Id", SqlDbType.Int);
                    command.Parameters.AddWithValue("@Text", SqlDbType.NVarChar);
                    command.Parameters.AddWithValue("@Answer", SqlDbType.NVarChar);
                    command.Parameters.AddWithValue("@Var1", SqlDbType.NVarChar);
                    command.Parameters.AddWithValue("@Var2", SqlDbType.NVarChar);
                    command.Parameters.AddWithValue("@Var3", SqlDbType.NVarChar);
                    command.Parameters.AddWithValue("@Var4", SqlDbType.NVarChar);

                    string query = @"SELECT COUNT(*) cnt FROM [QUESTIONS]";
                    using (SqlCommand commandS = new SqlCommand(query, connection))
                    {
                        command.Parameters["@Id"].Value = Convert.ToInt32(commandS.ExecuteScalar()) + 1;
                    }

                    command.Parameters["@Text"].Value   = e.Message.Question.Text;
                    command.Parameters["@Answer"].Value = e.Message.Question.Answer;
                    command.Parameters["@Var1"].Value   = e.Message.Question.Var1;
                    command.Parameters["@Var2"].Value   = e.Message.Question.Var2;

                    if (e.Message.Question.Var3 != "")
                    {
                        command.Parameters["@Var3"].Value = e.Message.Question.Var3;
                    }
                    else
                    {
                        command.Parameters["@Var3"].Value = "";
                    }
                    if (e.Message.Question.Var4 != "")
                    {
                        command.Parameters["@Var4"].Value = e.Message.Question.Var4;;
                    }
                    else
                    {
                        command.Parameters["@Var4"].Value = "";
                    }

                    command.ExecuteNonQuery();
                }
            }
        }