public Drawing_Paint_CLient()
        {
            InitializeComponent();
            label2.BackColor = Color.Black;                //По умолчанию для пера задан черный цвет, поэтому мы зададим такой же фон для label2
            g   = panel1.CreateGraphics();                 //Создаем область для работы с графикой на элементе panel
            pic = new Bitmap(panel1.Width, panel1.Height); // картинка

            listener = new UdpMessageListener <Lines>(Ports.LineServerPort);
            listener.IncomingMessage += OnLinesMessage;
            listener.Start();

            SMlistener = new UdpMessageListener <ServiceMessage>(Ports.SMServerPort);
            SMlistener.IncomingMessage += OnServiceMessage;
            SMlistener.Start();

            Pictlistener = new UdpMessageListener <Pictures>(Ports.PictPort);
            Pictlistener.IncomingMessage += OnPicturesMessage;
            Pictlistener.Start();

            using (var writer = NetworkingFactory.UdpWriter <ServiceMessage>(IPAddress.Parse(serverIP), Ports.SMPort))
            {
                var info = new ServiceMessage(Command.GetPic);
                writer.Write(info);
            }
        }
 // функция передаёт на сервер информацию о том, что экран был очищен
 private void my_clear()
 {
     using (var writer = NetworkingFactory.UdpWriter <ServiceMessage>(IPAddress.Parse(serverIP), Ports.SMPort))
     {
         var info = new ServiceMessage(Command.CleanScreen);
         writer.Write(info);
     }
 }
        /// <summary>
        /// Конструктор формы для отправки нового вопроса в базу данных
        /// </summary>
        /// <param name="ipAddressString"> ip-адрес сервера </param>
        public AddQuestionForm(string ipAddressString)
        {
            _server = NetworkingFactory.UdpWriter <ServiceMessage>(IPAddress.Parse(ipAddressString), 8080);

            InitializeComponent();

            VarComboBox.Items.AddRange(new string[] { "1", "2" });
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            IConnectionListener listener = NetworkingFactory.CreateListener(8080);

            listener.ConnectionEstablished += OnIncomingConnection;
            Conn = new DatabaseConnection("root", "");

            listener.Start();

            Console.WriteLine("Server started. Press Enter to stop it.");
            Console.Read();
        }
Exemplo n.º 5
0
        private void my_Pen()
        {
            Pen pen = new Pen(color, (float)numericUpDown1.Value); //Создаем перо, задаем ему цвет и толщину.

            // если закомментирована строчка ниже, то клиент не рисует на своей доске сам,
            // а передаёт линию серверу, который рисует на клиентах
            // g.DrawLine(pen, CurrentPoint, PrevPoint); //Соединияем точки линиями

            using (var writer = NetworkingFactory.UdpWriter <Lines>(IPAddress.Parse(serverIP), 8080))
            {
                var info = new Lines(CurrentPoint, PrevPoint, pen);
                writer.Write(info);
            }
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            IConnectionListener listener = NetworkingFactory.CreateListener(8080);

            listener.ConnectionEstablished += OnIncomingConnection;
            listener.Start();

            DatabaseConnection conn = new DatabaseConnection("root", "");

            Console.WriteLine("Connected");
            SmartReader.Server.Program.Conn = conn;

            Console.WriteLine("Server started. Press Enter to stop it.");
            Console.Read();
            // TODO закрывать соединение с базой
            // TODO закрывать TCP-соединения
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            Console.WriteLine("Нажмите пробел, когда сервер догрузится.");
            Console.ReadLine();

            using (IConnection connection = NetworkingFactory.OpenConnection("localhost", 8080))
            {
                connection.Open();
                connection.MessageReceived += OnMessage;
                IMessage msg;
                msg = MessageFactory.MakeRegistrationMessage("admin", "password", "*****@*****.**");
                connection.Send(msg);
                msg = MessageFactory.MakeAuthenticateMessage("admin", "asd");
                connection.Send(msg);

                msg = MessageFactory.MakeAuthenticateMessage("admin1", "asd");
                connection.Send(msg);

                Console.ReadLine();
                msg = MessageFactory.MakeAuthenticateMessage("admin", "password");
                connection.Send(msg);
                Console.ReadLine();

                msg = MessageFactory.MakeUploadBookMessage("Мартин Иден", "Ничё так!", TOKEN);
                connection.Send(msg);
                msg = MessageFactory.MakeUploadBookMessage("Русское Книго", "ЧТо-то тут не так!", TOKEN);
                connection.Send(msg);

                Console.ReadLine();

                msg = MessageFactory.MakeGetBookListMessage(TOKEN);
                connection.Send(msg);

                Console.ReadLine();
                msg = MessageFactory.MakeGetBookMessage(TOKEN, ID);
                connection.Send(msg);
                Console.WriteLine("ВНИМАНИЕ, УДАЛЕНИЕ");
                Console.ReadLine();
                msg = MessageFactory.MakeDeleteBookMessage(TOKEN, ID);
                connection.Send(msg);

                Console.Read();
                connection.Close();
            }
        }
 // функция пересылает картинку с сервера всем клиентам
 private void Send_picture()
 {
     foreach (var client in _clientList)
     {
         try
         {
             Monitor.Enter(panel1);
             Monitor.Enter(pic);
             _client_pictures = NetworkingFactory.UdpWriter <Pictures>(client, Ports.PictPort);
             var msg = new Pictures(pic);
             _client_pictures.Write(msg);
         }
         finally
         {
             Monitor.Exit(panel1);
             Monitor.Exit(pic);
         }
     }
 }
        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();
            }
        }
Exemplo n.º 10
0
 // Подключается к серверу
 private void ConnectServer()
 {
     if (!IsConnected)
     {
         try
         {
             // Создаем подключение к серверу
             Connection = NetworkingFactory.OpenConnection("localhost", 8080);
             Connection.Open();
             // Вешаем обработчики
             Connection.MessageReceived += OnIncomingMessage;
             Connection.Closed          += OnConnectionClosed;
             // Обновляем статус окна
             UpdateStatusLabel();
         }
         catch (SocketException)
         {
             Connection = null;
         }
     }
 }
        // обработчик события "появилась линия"
        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);
                }
            }
        }
        /// <summary>
        /// Конструктор формы для прождения теста
        /// </summary>
        /// <param name="ipAddressString"> ip-адрес сервера </param>
        public QuestionForm(string ipAddressString)
        {
            _listener = new UdpMessageListener <Question>(9090);
            _listener.IncomingMessage += OnIncomingQuestion;
            _listener.Start();
            _server = NetworkingFactory.UdpWriter <ServiceMessage>(IPAddress.Parse(ipAddressString), 8080);

            InitializeComponent();

            //Отправляем на сервер запрос о количестве вопросов в базе данных
            ServiceMessage msg = new ServiceMessage(Command.CountQuestions);

            _server.Write(msg);

            bool flag = false;

            //Пытаемся получить ответ на запрос от сервера
            try
            {
                var reader  = NetworkingFactory.UdpReader <Question>(9091);
                var Message = reader.Read(15000);
                var Sender  = reader.Sender;

                int.TryParse(Message.Text, out maxQuestionNumber);
                flag = true;
                reader.Dispose();
            }
            catch (Exception e)
            {
                //MessageBoxButtons buttons = MessageBoxButtons.OK;
                //MessageBox.Show(e.Message, "Error Detected in Input", buttons);
            }

            //Если ответ от сервера не получен, показываем соответствующее сообщение для пользователя
            string caption = "Info";
            var    message = "";

            if (!flag)
            {
                message = "Сервер не отвечает.";
            }
            else if (maxQuestionNumber == 0)
            {
                message = "В базе нет ни одного вопроса.";
            }

            if (message != "")
            {
                MessageBoxButtons buttons = MessageBoxButtons.OK;
                MessageBox.Show(message, caption, buttons);
            }

            CountLabel.Text = "В базе " + maxQuestionNumber + " вопросов.";

            //Генерируем случайную последовательность вопросов
            perm = Enumerable.Range(1, maxQuestionNumber).ToArray();
            Random r = rnd;

            for (int i = maxQuestionNumber - 1; i >= 1; i--)
            {
                int j = r.Next(i + 1);

                int temp = perm[j];
                perm[j] = perm[i];
                perm[i] = temp;
            }

            //Отправляем на сервер запрос первого вопроса теста
            msg = new ServiceMessage(Command.NextQuestion, perm[NumQuestion]);
            _server.Write(msg);
        }
 public UdpMessageListener(int port)
 {
     reader = NetworkingFactory.UdpReader <E>(port);
 }
Exemplo n.º 15
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();
                }
            }
        }