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);
            }
        }
Ejemplo n.º 2
0
 public ListenMessagesFromClient(Sandbox sandbox, int port)
 {
     Sandbox  = sandbox;
     Listener = new UdpMessageListener(port);
     Listener.Listen(MessageReceived);
     Sandbox.OnWorldUpdateAfterCollisions.Subscribe(AfterWorldUpdate);
 }
Ejemplo n.º 3
0
        public void ShouldReceiveMessagesFromMultipleSources()
        {
            var listenerPort = 20002;

            var expectedMessages = new string[] { "msg 1", "msg 2" };

            var listener = new UdpMessageListener(listenerPort);
            var count    = 0;

            listener.Listen((actualMessage, address) =>
            {
                count++;
                Assert.IsTrue(expectedMessages.Contains(actualMessage));
                if (count >= 2)
                {
                    AsyncAssert.Done();
                }
            });

            var writer1 = new UdpMessageSender();

            var writer2 = new UdpMessageSender();

            writer1.Send(expectedMessages[0], "localhost", listenerPort);
            writer2.Send(expectedMessages[1], "localhost", listenerPort);

            AsyncAssert.Wait();

            writer1.Dispose();
            writer2.Dispose();
            listener.Dispose();
        }
Ejemplo n.º 4
0
 public Drawing_Paint()
 {
     InitializeComponent();
     label2.BackColor = Color.Black;     //По умолчанию для пера задан черный цвет, поэтому мы зададим такой же фон для label2
     g        = panel1.CreateGraphics(); //Создаем область для работы с графикой на элементе panel
     listener = new UdpMessageListener <Lines>(9090);
     listener.IncomingMessage += OnServiceMessage;
     listener.Start();
 }
Ejemplo n.º 5
0
        public ListenMessagesFromServer(Sandbox sandbox, int port, string playerName)
        {
            Sandbox      = sandbox;
            TempPosition = new Position(0, 0);
            Listener     = new UdpMessageListener(port);
            Listener.Listen(MessageReceived);

            PlayerName = playerName;
            Sandbox.OnWorldUpdateAfterCollisions.Subscribe(WorldUpdate);
        }
        // при загрузке формочки запускаем слушателей, которые ловят события
        private void Form1_Load(object sender, EventArgs e)
        {
            linesListener = new UdpMessageListener <Lines>(Ports.LinePort);
            linesListener.IncomingMessage += OnLinesMessage;
            linesListener.Start();

            SMlistener = new UdpMessageListener <ServiceMessage>(Ports.SMPort);
            SMlistener.IncomingMessage += OnServiceMessage;
            SMlistener.Start();
        }
Ejemplo n.º 7
0
        public IpDiscover(Action <string> onNewIpDiscovered)
        {
            IpsFound          = new List <string>();
            OnNewIpDiscovered = onNewIpDiscovered;
            port        = 47777;
            myIp        = NetworkHelper.GetLocalIPAddress();
            broadcastIp = NetworkHelper.GetBroadcastAddress(
                IPAddress.Parse(myIp),
                IPAddress.Parse("255.255.255.0")).ToString();
            listener = new UdpMessageListener(port);
            sender   = new UdpMessageSender();
            listener.Listen(OnMessageReceived);

            var operation = new ParameterizedThreadStart(Broadcast);

            broadcastLoop = new Thread(operation, 1024 * 1024);
            broadcastLoop.Start();
        }
Ejemplo n.º 8
0
        public void ShouldReceiveAtLeastMessage()
        {
            var listenerPort    = 20000;
            var expectedMessage = "Opa! excelente~";

            var listener = new UdpMessageListener(listenerPort);

            listener.Listen((actualMessage, address) =>
            {
                Assert.AreEqual(expectedMessage, actualMessage);
                AsyncAssert.Done();
            });

            var writer = new UdpMessageSender();

            writer.Send(expectedMessage, "localhost", listenerPort);

            AsyncAssert.Wait();

            writer.Dispose();
            listener.Dispose();
        }
        /// <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);
        }
 private void Form1_Load(object sender, EventArgs e)
 {
     listener = new UdpMessageListener <Lines>(8080);
     listener.IncomingMessage += OnServiceMessage;
     listener.Start();
 }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            using (var listener = new UdpMessageListener <ServiceMessage>(8080))
            {
                listener.IncomingMessage += OnServiceMessage;
                listener.Start();
                Console.WriteLine("Сервер жив!");
                Console.WriteLine("Список команд: ");
                Console.WriteLine("questions - вывести список вопросов из базы;");
                Console.WriteLine("delete    - удалить вопрос из базы по id;");
                Console.WriteLine("exit      - закончить работу сервера.");
                Console.WriteLine();

                while (true)
                {
                    string command = Console.ReadLine().ToLower();
                    switch (command)
                    {
                    case "questions":
                    {
                        string connectionString = GetConnectionString();
                        using (SqlConnection connection = new SqlConnection(connectionString))
                        {
                            connection.Open();

                            string query = @"SELECT Id, Text FROM [QUESTIONS]";
                            //string query = @"SELECT * FROM [QUESTIONS]";
                            using (SqlCommand sqlcommand = new SqlCommand(query, connection))
                            {
                                using (SqlDataReader reader = sqlcommand.ExecuteReader())
                                {
                                    while (reader.Read())
                                    {
                                        for (int i = 0; i < reader.FieldCount; i++)
                                        {
                                            var    dtS = reader.GetDataTypeName(i);
                                            string s;
                                            switch (dtS)
                                            {
                                            case "int":
                                            {
                                                s = String.Format("{0}", reader.GetInt32(i));
                                                break;
                                            }

                                            case "nvarchar":
                                            {
                                                s = reader.GetString(i);
                                                break;
                                            }

                                            default:
                                            {
                                                s = "@" + dtS + "@";
                                                break;
                                            }
                                            }

                                            Console.Write("\"{0}\" ", s == null ? "null" : s);
                                        }
                                        Console.WriteLine();
                                    }
                                }
                            }
                        }
                        break;
                    }

                    case "delete":
                    {
                        string connectionString = GetConnectionString();

                        int countQuestions;
                        using (SqlConnection connection = new SqlConnection(connectionString))
                        {
                            connection.Open();
                            string query = @"SELECT COUNT(*) cnt FROM [QUESTIONS]";
                            using (SqlCommand commandS = new SqlCommand(query, connection))
                            {
                                countQuestions = Convert.ToInt32(commandS.ExecuteScalar()) + 1;
                            }
                            connection.Close();
                        }

                        Console.Write("Введите номер вопроса (Введите \"-1\" для отмены операции): ");
                        int id;
                        if (!Int32.TryParse(Console.ReadLine(), out id))
                        {
                            Console.WriteLine("Значение введено некорректно.");
                        }
                        else if (id == -1)
                        {
                            Console.WriteLine("Операция отменена");
                            break;
                        }
                        else if (id > countQuestions || id < -1)
                        {
                            Console.WriteLine("Вопроса с таким id нет в базе.");
                            break;
                        }

                        using (SqlConnection connection = new SqlConnection(connectionString))
                        {
                            connection.Open();

                            string     query      = @"DELETE FROM Questions WHERE Id = " + id;
                            SqlCommand commandDel = new SqlCommand(query, connection);

                            commandDel.ExecuteNonQuery();

                            if (id != countQuestions)
                            {
                                for (int i = id + 1; i <= countQuestions; i++)
                                {
                                    query      = @"UPDATE Questions SET Id = " + (i - 1) + " WHERE Id = " + i;
                                    commandDel = new SqlCommand(query, connection);

                                    commandDel.ExecuteNonQuery();
                                }
                            }
                            Console.WriteLine("Вопрос успешно удален.");
                            connection.Close();
                        }
                        break;
                    }

                    case "exit":
                    {
                        goto exit;
                    }

                    default:
                    {
                        Console.WriteLine("Команда не распознана.");
                        break;
                    }
                    }
                    Console.WriteLine();
                }
                exit : Console.WriteLine("Выключение...");
            }
        }