// обработка сообщений от сервера об очистке экрана 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); }
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()); }
//Обработка сообщения пришедшего на сервер 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(); } } }